Haskell/Libraries
外观
< Haskell
Haskell 拥有丰富且不断增长的库集。它们分为几个组
- 标准 Prelude(通常简称为“Prelude”)在 Haskell 2010 标准 中定义,并自动导入到您编写的每个模块中。它定义了标准类型,例如字符串、列表、数字以及这些类型上的基本函数,例如算术运算、
map
和foldr
。
- 标准库也在语言标准中定义,但您需要在需要时才导入它们。这些库的规范也可以在 Haskell 2010 标准中找到。
- 自 1998 年以来,标准库一直在逐渐扩展,由此产生的事实标准被称为 Base 库。Hugs 和 GHC 都可以使用相同的集合。
- 其他库可能与各种编译器捆绑在一起。特别是,GHC 包含一些常用库,包括重要的包,例如
containers
、text
和bytestring
。[1]
- 许多其他库可从 Hackage 获得,并且可以使用
cabal
实用程序进行安装。
当 Haskell 98 被标准化时,模块被赋予了一个扁平的命名空间。事实证明这不足够,并且通过允许模块名称中的点添加了一个层次化的命名空间。为了向后兼容,标准库仍然可以通过它们的非层次名称访问,因此模块 List
和 Data.List
都指的是标准列表库。
有关如何将库导入程序的详细信息,请参阅 Modules 章节。有关用于打包 Haskell 软件的 Cabal 系统的说明,请参阅 Haskell/Packaging。
库参考文档通常使用 Haddock 工具生成。与 GHC 一起提供的库以这种方式记录。您可以 在线 查看文档,如果您已安装 GHC,那么应该也存在本地副本。
Haddock 生成超链接文档,因此每次您看到函数、类型或类名称时,都可以单击它以转到定义。可用的库数量之多令人望而生畏,因此本教程将重点介绍亮点。
请注意,Haddock 通过实例交叉引用类型和类。例如,在 Data.Maybe
库中,Maybe
数据类型被列为 Ord
的实例。
Ord a => Ord (Maybe a)
如果您声明类型 Foo
是 Ord
的实例,那么类型 Maybe Foo
也会自动成为 Ord
的实例。如果您单击文档中的 Ord
一词,您将被带到 Ord
类的定义及其(非常长)的实例列表。Maybe
的实例也会在那里。
备注
- ↑ Packages 是库的发布单位。它们由一组模块组成,这些模块打包在一起以方便发布和安装。