到目前為止,我們已經討論了許多類型的Haskell函數,並使用了不同的方式來調用這些函數。在本章中,將學習一些可以在Haskell中輕鬆使用的基本函數,而無需導入任何特殊的Type
類。這些函數大多數都是其他高階功能的一部分。
1. 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
2. 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]
3. last函數
顧名思義,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
4. 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]
5. 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
6. 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]
7. length函數
此函數用於計算參數的長度。看下麵的例子-
main = do
let x = [1..10]
putStrLn "Our list is:"
print (x)
putStrLn "The length of this list is:"
print (length x)
執行上面示例代碼,得到以下結果:
Our list is:
[1,2,3,4,5,6,7,8,9,10]
The length of this list is:
10
8. take函數
take
函數用於從一個字串創建子字串。以下代碼顯示了如何在Haskell中使用take
函數-
main = print(take 5 ([1 .. 10]))
執行上面示例代碼,得到以下結果:
[1,2,3,4,5]
9. drop函數
drop
函數還用於生成子字串。它的功能與take
函數相反。看下麵的代碼 -
main = print(drop 5 ([1 .. 10]))
上面代碼刪除列表中前5個元素,並列印其餘5個元素。它將產生以下輸出-
[6,7,8,9,10]
10. maximum函數
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
11. minmum函數
minmum
函數用於從提供的列表中查找最小值的元素。看看如何在代碼中使用它-
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
12. 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
13. 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
1. elem函數
elem
函數用於檢查列表是否包含特定元素。如果包含則返回true
,否則返回false
。以下代碼檢查所提供的元素列表是否包含值786
。
Live Demo
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
。