
- Haskell 教程
- Haskell - 首頁
- Haskell - 概覽
- Haskell - 環境設定
- Haskell - 基本資料模型
- Haskell - 基本運算子
- Haskell - 決策
- Haskell - 型別和型別類
- Haskell - 函式
- Haskell - 函式詳解
- Haskell - 函式組合
- Haskell - 模組
- Haskell - 輸入與輸出
- Haskell - Functor
- Haskell - Monad
- Haskell - Zipper
- Haskell 有用資源
- Haskell - 快速指南
- Haskell - 有用資源
- Haskell - 討論
Haskell - 函式詳解
到目前為止,我們已經討論了許多種 Haskell 函式,並使用了不同的方法來呼叫這些函式。在本章中,我們將學習一些基本函式,這些函式可以在 Haskell 中輕鬆使用,而無需匯入任何特殊的型別類。大多數這些函式都是其他高階函式的一部分。
Head 函式
Head 函式作用於列表。它返回輸入引數(基本上是一個列表)的第一個元素。在下面的示例中,我們傳遞了一個包含 10 個值的列表,並且我們使用 head 函式生成該列表的第一個元素。
main = do let x = [1..10] putStrLn "Our list is:" print (x) putStrLn "The first element of the list is:" print (head x)
它將產生以下輸出:
Our list is: [1,2,3,4,5,6,7,8,9,10] The first element of the list is: 1
Tail 函式
Tail 是補充 head 函式的函式。它以列表作為輸入,並生成不包含頭部部分的整個列表。這意味著,tail 函式返回不包含第一個元素的整個列表。請看下面的例子:
main = do let x = [1..10] putStrLn "Our list is:" print (x) putStrLn "The tail of our list is:" print (tail x)
它將產生以下輸出:
Our list is: [1,2,3,4,5,6,7,8,9,10] The tail of our list is: [2,3,4,5,6,7,8,9,10]
Last 函式
顧名思義,它生成作為輸入提供的列表的最後一個元素。檢視以下示例。
main = do let x = [1..10] putStrLn "Our list is:" print (x) putStrLn "The last element of our list is:" print (last x)
它將產生以下輸出:
Our list is: [1,2,3,4,5,6,7,8,9,10] The last element of our list is: 10
Init 函式
Init 的作用與 tail 函式完全相反。它以列表作為引數,並返回不包含最後一個條目的整個列表。
main = do let x = [1..10] putStrLn "Our list is:" print (x) putStrLn "Our list without the last entry:" print (init x)
現在,觀察它的輸出:
Our list is: [1,2,3,4,5,6,7,8,9,10] Our list without the last entry: [1,2,3,4,5,6,7,8,9]
Null 函式
Null 是一個布林檢查函式,它作用於字串,並且僅當給定的列表為空時返回True,否則返回False。以下程式碼檢查提供的列表是否為空。
main = do let x = [1..10] putStrLn "Our list is:" print (x) putStrLn "Is our list empty?" print (null x)
它將產生以下輸出:
Our list is: [1,2,3,4,5,6,7,8,9,10] Is our list empty? False
Reverse 函式
它作用於字串輸入,並將整個輸入轉換為反序,並輸出一個結果。以下是此函式的程式碼庫。
main = do let x = [1..10] putStrLn "Our list is:" print (x) putStrLn "The list in Reverse Order is:" print (reverse x)
它將產生以下輸出:
Our list is: [1,2,3,4,5,6,7,8,9,10] The list in Reverse Order is: [10,9,8,7,6,5,4,3,2,1]
Length 函式
此函式用於計算作為引數給出的列表的長度。請看下面的例子:
main = do let x = [1..10] putStrLn "Our list is:" print (x) putStrLn "The length of this list is:" print (length x)
我們的列表中有 10 個元素,因此我們的程式碼將輸出 10。
Our list is: [1,2,3,4,5,6,7,8,9,10] The length of this list is: 10
Take 函式
Take 函式用於從另一個字串建立子字串。以下程式碼顯示瞭如何在 Haskell 中使用 take 函式:
main = print(take 5 ([1 .. 10]))
該程式碼從提供的列表中生成一個包含 5 個元素的子字串:
[1,2,3,4,5]
Drop 函式
此函式也用於生成子字串。它的作用與 take 函式相反。檢視以下程式碼段:
main = print(drop 5 ([1 .. 10]))
該程式碼從提供的列表中刪除前 5 個元素,並列印其餘 5 個元素。它將產生以下輸出:
[6,7,8,9,10]
Maximum 函式
此函式用於從提供的列表中查詢具有最大值的元素。讓我們看看如何在實踐中使用它:
main = do let x = [1,45,565,1245,02,2] putStrLn "The maximum value element of the list is:" print (maximum x)
以上程式碼段將生成以下輸出:
The maximum value element of the list is: 1245
Minimum 函式
此函式用於從提供的列表中查詢具有最小值的元素。它只是 maximum 函式的反面。
main = do let x = [1,45,565,1245,02,2] putStrLn "The minimum value element of the list is:" print (minimum x)
以上程式碼的輸出為:
The minimum value element of the list is: 1
Sum 函式
顧名思義,此函式返回提供的列表中所有元素的總和。以下程式碼獲取一個包含 5 個元素的列表,並將其總和作為輸出返回。
main = do let x = [1..5] putStrLn "Our list is:" print (x) putStrLn "The summation of the list elements is:" print (sum x)
它將產生以下輸出:
Our list is: [1,2,3,4,5] The summation of the list elements is: 15
Product 函式
您可以使用此函式將列表中的所有元素相乘並列印其值。
main = do let x = [1..5] putStrLn "Our list is:" print (x) putStrLn "The multiplication of the list elements is:" print (product x)
我們的程式碼將產生以下輸出:
Our list is: [1,2,3,4,5] The multiplication of the list elements is: 120
Elem 函式
此函式用於檢查提供的列表是否包含特定元素。相應地,它返回true 或false。
以下程式碼檢查提供的元素列表是否包含值 786。
main = do let x = [1,45,155,1785] putStrLn "Our list is:" print (x) putStrLn "Does it contain 786?" print (elem 786 (x))
它將產生以下輸出:
Our list is: [1,45,155,1785] Does it contain 786? False
使用相同的程式碼檢查提供的列表是否包含值 1785。