Haskell - 有关函数的更多信息


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

头部功能

Head函数作用于列表。它返回输入参数的第一个,它基本上是一个列表。在下面的示例中,我们传递一个包含 10 个值的列表,并使用head函数生成该列表的第一个元素。

主要=做
   让 x = [1..10]   
   putStrLn "我们的列表是:"  
   打印(x)
   putStrLn "列表的第一个元素是:"
   打印(头x)

它将产生以下输出 -

我们的清单是:
[1,2,3,4,5,6,7,8,9,10]
列表的第一个元素是:
1

尾部功能

Tail是对head功能的补充。它接受一个列表作为输入,并生成没有头部的整个列表。这意味着,tail函数返回整个列表,不含第一个元素。看一下下面的例子 -

主要=做
   让 x = [1..10]   
   putStrLn "我们的列表是:"  
   打印(x)
   putStrLn "我们列表的尾部是:"
   打印(尾部x)

它将产生以下输出 -

我们的清单是:
[1,2,3,4,5,6,7,8,9,10]
我们列表的末尾是:
[2,3,4,5,6,7,8,9,10]

最后一个功能

顾名思义,它生成作为输入提供的列表的最后一个元素。检查以下示例。

主要=做
   让 x = [1..10]   
   putStrLn "我们的列表是:"  
   打印(x)
   putStrLn“我们列表的最后一个元素是:”
   打印(最后一个x)

它将产生以下输出 -

我们的清单是:
[1,2,3,4,5,6,7,8,9,10]
我们列表的最后一个元素是:
10

初始化函数

Init 的工作原理与tail函数完全相反。它接受一个列表作为参数,并返回整个列表,不包含最后一个条目。

主要=做
   让 x = [1..10]   
   putStrLn "我们的列表是:"  
   打印(x)
   putStrLn "我们的列表没有最后一个条目:"  
   打印(初始化x)

现在,观察它的输出 -

我们的清单是:
[1,2,3,4,5,6,7,8,9,10]
我们的列表没有最后一个条目:
[1,2,3,4,5,6,7,8,9]

空函数

Null是一个布尔检查函数,适用于 String 并仅当给定列表为空时返回True,否则返回False。以下代码检查提供的列表是否为空。

主要=做
   让 x = [1..10]   
   putStrLn "我们的列表是:"  
   打印(x)
   putStrLn“我们的列表是空的吗?”  
   打印(空x)

它将产生以下输出 -

我们的清单是:
[1,2,3,4,5,6,7,8,9,10]
我们的列表是空的吗?
错误的

反转功能

它作用于字符串输入,并将整个输入转换为相反的顺序,并给出一个输出作为结果。以下是该函数的代码库。

主要=做
   让 x = [1..10]  
   putStrLn "我们的列表是:"
   打印(x)
   putStrLn "倒序排列的列表是:"
   打印(反转x)

它将产生以下输出 -

我们的清单是:
[1,2,3,4,5,6,7,8,9,10]
倒序排列的列表是:
[10,9,8,7,6,5,4,3,2,1]

长度函数

该函数用于计算作为参数给出的列表的长度。看一下下面的例子 -

主要=做
   让 x = [1..10]   
   putStrLn "我们的列表是:"
   打印(x)
   putStrLn "此列表的长度是:"
   打印(长度x)

我们的列表中有 10 个元素,因此我们的代码将产生 10 作为输出。

我们的清单是:
[1,2,3,4,5,6,7,8,9,10]
该列表的长度为:
10

采取功能

Take函数用于从另一个字符串创建子字符串。以下代码展示了如何在 Haskell 中使用 take 函数 -

main = print(取 5 ([1 .. 10])) 

该代码生成一个子字符串,其中包含所提供列表中的 5 个元素 -

[1,2,3,4,5]

下降功能

该函数还用于生成子字符串。它的功能与take功能相反。看下面的代码 -

主要 = 打印(滴 5 ([1 .. 10])) 

该代码从提供的列表中删除前 5 个元素并打印其余 5 个元素。它将产生以下输出 -

[6,7,8,9,10]

最大功能

该函数用于从提供的列表中查找具有最大值的元素。让我们看看如何在实践中使用它 -

主要=做
   让 x = [1,45,565,1245,02,2]   
   putStrLn "列表的最大值元素是:"  
   打印(最大x)

上面的代码将生成以下输出 -

列表的最大值元素为:
1245

最小函数

该函数用于从提供的列表中查找具有最小值的元素。它正好与极大值函数相反。

主要=做
   让 x = [1,45,565,1245,02,2]   
   putStrLn "列表的最小值元素是:"  
   打印(最小x)

上述代码的输出是 -

列表的最小值元素为:
1

求和函数

顾名思义,该函数返回所提供列表中所有元素的总和。以下代码采用 5 个元素的列表,并返回它们的总和作为输出。

主要=做
   让 x = [1..5]
   putStrLn "我们的列表是:"
   打印(x)
   putStrLn "列表元素的总和是:"
   打印(总和x)

它将产生以下输出 -

我们的清单是:
[1,2,3,4,5]
列表元素的总和为:
15

产品功能

您可以使用此函数将列表中的所有元素相乘并打印其值。

主要=做
   让 x = [1..5]
   putStrLn "我们的列表是:"
   打印(x)
   putStrLn "列表元素的乘法是:"
   打印(产品x)

我们的代码将产生以下输出 -

我们的清单是:
[1,2,3,4,5]
列表元素的乘法为:
120

元素函数

此函数用于检查提供的列表是否包含特定元素。因此,它返回truefalse

以下代码检查提供的元素列表是否包含值 786。

主要=做
   让 x = [1,45,155,1785]
   putStrLn "我们的列表是:"
   打印(x)
   putStrLn "它包含 786 吗?"
   打印(元素786(x))

它将产生以下输出 -

我们的清单是:
[1,45,155,1785]
里面有786吗?
错误的

使用相同的代码检查提供的列表是否包含值 1785。