跳转到内容

Haskell/库

来自维基教科书,开放的书籍,面向开放的世界
(从 Haskell/库参考 重定向)

Haskell 拥有丰富的库集合,并且还在不断增长。它们可以分为几个组

  • 标准 Prelude(通常简称为“Prelude”)在 Haskell 2010 标准 中定义,并自动导入到您编写的每个模块中。它定义了标准类型,如字符串、列表、数字,以及这些类型上的基本函数,如算术运算、mapfoldr
  • 标准库也在语言标准中定义,但您需要在使用它们时导入它们。这些库的规范也可以在 Haskell 2010 标准中找到。
  • 自 1998 年以来,标准库一直在逐渐扩展,由此产生的 *事实* 标准被称为基础库。Hugs 和 GHC 都可以使用相同的集合。
  • 其他库可能与各种编译器捆绑在一起。特别是,GHC 包含了一些常用的库,包括重要的包,如 containerstextbytestring[1]
  • 许多其他库可从 Hackage 获得,可以使用 cabal 实用程序进行安装。

在 Haskell 98 标准化时,模块被赋予了扁平的命名空间。事实证明这并不充分,并且通过在模块名称中允许使用点来添加了分层命名空间。为了向后兼容,标准库仍然可以通过它们的非分层名称访问,因此模块 ListData.List 都指向标准列表库。

有关如何在程序中导入库的详细信息,请参见 模块 章节。有关用于打包 Haskell 软件的 Cabal 系统的解释,请参见 Haskell/打包

Haddock 文档

[编辑 | 编辑源代码]

库参考文档通常使用 Haddock 工具生成。与 GHC 一起提供的库以这种方式进行文档化。您可以查看 在线 文档,如果您已安装 GHC,则应该还有一个本地副本。

Haddock 生成超链接文档,因此每次您看到函数、类型或类名称时,您都可以单击它以转到定义。可用的库数量之多令人望而生畏,因此本教程将重点介绍亮点。

请注意,Haddock 通过实例交叉引用类型和类。例如,在 Data.Maybe 库中,Maybe 数据类型被列为 Ord 的实例

Ord a => Ord (Maybe a)

如果您声明类型 FooOrd 的实例,那么类型 Maybe Foo 也将自动成为 Ord 的实例。如果您单击文档中的 Ord 一词,您将被带到 Ord 类的定义及其(非常长)的实例列表。Maybe 的实例也将位于那里。

注意

  1. 是库的发布单位。它们由一组模块组成,打包以方便发布和安装。
华夏公益教科书