- 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。