Haskell/庫
外觀
Haskell 擁有豐富的庫集合,並且還在不斷增長。它們可以分為幾個組
- 標準 Prelude(通常簡稱為“Prelude”)在 Haskell 2010 標準 中定義,並自動匯入到您編寫的每個模組中。它定義了標準型別,如字串、列表、數字,以及這些型別上的基本函式,如算術運算、
map和foldr。
- 標準庫也在語言標準中定義,但您需要在使用它們時匯入它們。這些庫的規範也可以在 Haskell 2010 標準中找到。
- 自 1998 年以來,標準庫一直在逐漸擴充套件,由此產生的 *事實* 標準被稱為基礎庫。Hugs 和 GHC 都可以使用相同的集合。
- 其他庫可能與各種編譯器捆綁在一起。特別是,GHC 包含了一些常用的庫,包括重要的包,如
containers、text和bytestring。[1]
- 許多其他庫可從 Hackage 獲得,可以使用
cabal實用程式進行安裝。
在 Haskell 98 標準化時,模組被賦予了扁平的名稱空間。事實證明這並不充分,並且透過在模組名稱中允許使用點來添加了分層名稱空間。為了向後相容,標準庫仍然可以透過它們的非分層名稱訪問,因此模組 List 和 Data.List 都指向標準列表庫。
有關如何在程式中匯入庫的詳細資訊,請參見 模組 章節。有關用於打包 Haskell 軟體的 Cabal 系統的解釋,請參見 Haskell/打包。
庫參考文件通常使用 Haddock 工具生成。與 GHC 一起提供的庫以這種方式進行文件化。您可以檢視 線上 文件,如果您已安裝 GHC,則應該還有一個本地副本。
Haddock 生成超連結文件,因此每次您看到函式、型別或類名稱時,您都可以單擊它以轉到定義。可用的庫數量之多令人望而生畏,因此本教程將重點介紹亮點。
請注意,Haddock 透過例項交叉引用型別和類。例如,在 Data.Maybe 庫中,Maybe 資料型別被列為 Ord 的例項
Ord a => Ord (Maybe a)
如果您宣告型別 Foo 是 Ord 的例項,那麼型別 Maybe Foo 也將自動成為 Ord 的例項。如果您單擊文件中的 Ord 一詞,您將被帶到 Ord 類的定義及其(非常長)的例項列表。Maybe 的例項也將位於那裡。
注意
- ↑ 包 是庫的釋出單位。它們由一組模組組成,打包以方便釋出和安裝。