更多功能( More On Functions)
到目前为止,我们已经讨论了许多类型的Haskell函数,并使用不同的方法来调用这些函数。 在本章中,我们将学习一些可以在Haskell中轻松使用的基本函数,而无需导入任何特殊的Type类。 大多数这些函数都是其他高阶函数的一部分。
头部功能
Head功能适用于List。 它返回输入参数的第一个,它基本上是一个列表。 在下面的示例中,我们传递一个包含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是补充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]
最后的功能
顾名思义,它产生列表的最后一个元素作为输入提供。 请检查以下示例。
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完全与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是一个布尔检查函数,它对String起作用,只有当给定列表为空时才返回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
反向功能
它适用于String输入,并将整个输入转换为相反的顺序,并作为结果输出一个输出。 以下是此功能的代码库。
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]
长度函数
此函数用于计算作为参数给出的list的长度。 看看下面的例子 -
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函数用于从另一个String创建子字符串。 以下代码显示了如何在Haskell中使用take函数 -
main = print(take 5 ([1 .. 10]))
该代码生成一个子字符串,其中包含来自提供列表的5个元素 -
[1,2,3,4,5]
掉落功能
此函数还用于生成子字符串。 它的作用与take函数相反。 看下面这段代码 -
main = print(drop 5 ([1 .. 10]))
代码从提供的列表中删除前5个元素,并打印剩余的5个元素。 它将产生以下输出 -
[6,7,8,9,10]
最大功能
此函数用于从提供的列表中查找具有最大值的元素。 让我们看看如何在实践中使用它 -
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
最小功能
此函数用于查找提供列表中具有最小值的元素。 它与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
求和函数
顾名思义,此函数返回提供列表中存在的所有元素的总和。 以下代码采用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
产品功能
您可以使用此函数乘以列表中的所有元素并打印其值。
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。