跳轉到內容

Haskell/Libraries

來自華夏公益教科書

Haskell 擁有豐富且不斷增長的庫集。它們分為幾個組

  • 標準 Prelude(通常簡稱為“Prelude”)在 Haskell 2010 標準 中定義,並自動匯入到您編寫的每個模組中。它定義了標準型別,例如字串、列表、數字以及這些型別上的基本函式,例如算術運算、mapfoldr
  • 標準庫也在語言標準中定義,但您需要在需要時才匯入它們。這些庫的規範也可以在 Haskell 2010 標準中找到。
  • 自 1998 年以來,標準庫一直在逐漸擴充套件,由此產生的事實標準被稱為 Base 庫。Hugs 和 GHC 都可以使用相同的集合。
  • 其他庫可能與各種編譯器捆綁在一起。特別是,GHC 包含一些常用庫,包括重要的包,例如 containerstextbytestring[1]
  • 許多其他庫可從 Hackage 獲得,並且可以使用 cabal 實用程式進行安裝。

當 Haskell 98 被標準化時,模組被賦予了一個扁平的名稱空間。事實證明這不足夠,並且透過允許模組名稱中的點添加了一個層次化的名稱空間。為了向後相容,標準庫仍然可以透過它們的非層次名稱訪問,因此模組 ListData.List 都指的是標準列表庫。

有關如何將庫匯入程式的詳細資訊,請參閱 Modules 章節。有關用於打包 Haskell 軟體的 Cabal 系統的說明,請參閱 Haskell/Packaging

Haddock 文件

[編輯 | 編輯原始碼]

庫參考文件通常使用 Haddock 工具生成。與 GHC 一起提供的庫以這種方式記錄。您可以 線上 檢視文件,如果您已安裝 GHC,那麼應該也存在本地副本。

Haddock 生成超連結文件,因此每次您看到函式、型別或類名稱時,都可以單擊它以轉到定義。可用的庫數量之多令人望而生畏,因此本教程將重點介紹亮點。

請注意,Haddock 透過例項交叉引用型別和類。例如,在 Data.Maybe 庫中,Maybe 資料型別被列為 Ord 的例項。

Ord a => Ord (Maybe a)

如果您宣告型別 FooOrd 的例項,那麼型別 Maybe Foo 也會自動成為 Ord 的例項。如果您單擊文件中的 Ord 一詞,您將被帶到 Ord 類的定義及其(非常長)的例項列表。Maybe 的例項也會在那裡。

備註

  1. Packages 是庫的釋出單位。它們由一組模組組成,這些模組打包在一起以方便釋出和安裝。
華夏公益教科書