
- Haskell 教程
- Haskell - 首頁
- Haskell - 概述
- Haskell - 環境設定
- Haskell - 基本資料模型
- Haskell - 基本運算子
- Haskell - 決策
- Haskell - 型別和型別類
- Haskell - 函式
- Haskell - 函式詳解
- Haskell - 函式組合
- Haskell - 模組
- Haskell - 輸入與輸出
- Haskell - Functor
- Haskell - Monad
- Haskell - Zipper
- Haskell 有用資源
- Haskell - 快速指南
- Haskell - 有用資源
- Haskell - 討論
Haskell - 模組
如果你使用過 Java,那麼你應該知道所有類是如何繫結到一個名為包的資料夾中的。類似地,Haskell 可以被認為是模組的集合。
Haskell 是一種函式式語言,所有內容都表示為表示式,因此模組可以被稱為相似或相關型別函式的集合。
你可以從一個模組匯入函式到另一個模組。所有“匯入”語句都應該在開始定義其他函式之前出現。在本章中,我們將學習 Haskell 模組的不同特性。
列表模組
列表提供了一些用於處理列表型別資料的優秀函式。一旦你匯入了 List 模組,你就可以使用各種各樣的函式。
在下面的示例中,我們使用了一些 List 模組中可用的重要函式。
import Data.List main = do putStrLn("Different methods of List Module") print(intersperse '.' "Tutorialspoint.com") print(intercalate " " ["Lets","Start","with","Haskell"]) print(splitAt 7 "HaskellTutorial") print (sort [8,5,3,2,1,6,4,2])
在這裡,我們有很多函式,甚至沒有定義它們。這是因為這些函式在 List 模組中可用。匯入 List 模組後,Haskell 編譯器使所有這些函式在全域性名稱空間中可用。因此,我們可以使用這些函式。
我們的程式碼將產生以下輸出:
Different methods of List Module "T.u.t.o.r.i.a.l.s.p.o.i.n.t...c.o.m" "Lets Start with Haskell" ("Haskell","Tutorial") [1,2,2,3,4,5,6,8]
字元模組
Char 模組有許多預定義的函式來處理字元型別。請檢視以下程式碼塊:
import Data.Char main = do putStrLn("Different methods of Char Module") print(toUpper 'a') print(words "Let us study tonight") print(toLower 'A')
在這裡,函式toUpper 和toLower 已經在Char 模組中定義。它將產生以下輸出:
Different methods of Char Module 'A' ["Let","us","study","tonight"] 'a'
對映模組
Map 是一種無序的鍵值對型別資料型別。它是一個廣泛使用的模組,包含許多有用的函式。以下示例演示瞭如何使用 Map 模組中可用的預定義函式。
import Data.Map (Map) import qualified Data.Map as Map --required for GHCI myMap :: Integer -> Map Integer [Integer] myMap n = Map.fromList (map makePair [1..n]) where makePair x = (x, [x]) main = print(myMap 3)
它將產生以下輸出:
fromList [(1,[1]),(2,[2]),(3,[3])]
集合模組
Set 模組有一些非常有用的預定義函式來運算元學資料。集合被實現為二叉樹,因此集合中的所有元素都必須是唯一的。
請檢視以下示例程式碼
import qualified Data.Set as Set text1 = "Hey buddy" text2 = "This tutorial is for Haskell" main = do let set1 = Set.fromList text1 set2 = Set.fromList text2 print(set1) print(set2)
在這裡,我們將字串修改為集合。它將產生以下輸出。請注意,輸出集合中沒有字元重複。
fromList " Hbdeuy" fromList " HTaefhiklorstu"
自定義模組
讓我們看看如何建立一個可以在其他程式中呼叫的自定義模組。要實現此自定義模組,我們將建立一個名為“custom.hs” 的單獨檔案以及我們的“main.hs”。
讓我們建立自定義模組並在其中定義一些函式。
custom.hs
module Custom ( showEven, showBoolean ) where showEven:: Int-> Bool showEven x = do if x 'rem' 2 == 0 then True else False showBoolean :: Bool->Int showBoolean c = do if c == True then 1 else 0
我們的自定義模組已準備就緒。現在,讓我們將其匯入到程式中。
main.hs
import Custom main = do print(showEven 4) print(showBoolean True)
我們的程式碼將生成以下輸出:
True 1
showEven 函式返回True,因為“4”是偶數。showBoolean 函式返回“1”,因為我們傳遞給函式的布林函式為“True”。