跳轉到內容

Haskell/庫

來自華夏公益教科書,開放的書籍,為開放的世界
(從 Haskell/分層庫 重定向)

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

  • 標準 Prelude(通常簡稱為“Prelude”)在 Haskell 2010 標準 中定義,並自動匯入到您編寫的每個模組中。它定義了標準型別,如字串、列表、數字以及對這些型別的基本函式,如算術運算、mapfoldr
  • 標準庫也在語言標準中定義,但您需要在需要時匯入它們。這些庫的規範也可以在 Haskell 2010 標準中找到。
  • 自 1998 年以來,標準庫一直在逐步擴充套件,由此產生的實際標準稱為 Base 庫。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. 是庫的釋出單位。它們由一組模組組成,打包便於釋出和安裝。
華夏公益教科書