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 函式

此函式用於檢查提供的列表是否包含特定元素。相應地,它返回truefalse

以下程式碼檢查提供的元素列表是否包含值 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。

廣告