階乘
階乘函式是 HaskellHello World! (通常用於函數語言程式設計),它簡潔地演示了該語言的基本原理。
變化 1
fac :: (Integral a) => a -> a
fac n = product [1..n]
- Integral是整數型別的類。例子包括- Int和- Integer。
- (Integral a) =>對所述類中的- a型別施加約束
- fac::a -> a說- fac是一個接受- a並返回- a的函式
- product是一個函式,它通過將它們相乘來累積列表中的所有數字。
- [1..n]是特殊的符號,它取決於- enumFromTo 1 n,是數字的範圍。
變化 2
fac :: (Integral a) => a -> a
fac 0 = 1
fac n = n * fac (n - 1)
此變體使用模式匹配將函式定義拆分為單獨的案例。如果引數是 0(有時稱為停止條件),則呼叫第一個定義,否則呼叫第二個定義(定義的順序很重要)。它也舉例說明遞迴,因為 fac 指的是它自己。
值得注意的是,由於重寫規則,當使用 GHC 並啟用優化時,兩個版本的 fac 將編譯為相同的機器程式碼。因此,就效率而言,兩者是等價的。