Haskell - 有关函数的更多信息

到目前为止,我们已经讨论了多种类型的 Haskell 函数,并使用了不同的方式来调用这些函数。 在本章中,我们将学习一些可以在 Haskell 中轻松使用的基本函数,而无需导入任何特殊的 Type 类。 这些函数大部分都是其他高阶函数的一部分。

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 函数的补充。 它接受 list 作为输入,并生成没有头部的整个列表。 这意味着 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) 

Now, observe its output −

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 output of the above code is −

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。