gpt4 book ai didi

list - 使用 tail 定义长度函数

转载 作者:行者123 更新时间:2023-12-05 01:27:19 25 4
gpt4 key购买 nike

我对 Haskell 很陌生,我正在尝试定义自己的长度函数,如下所示:

lengthz::[a] -> a
长度z [] = 0
长度z n = 1 + 长度(尾n)

为什么不能编译?或者,我的逻辑有问题吗?

谢谢!

最佳答案

首先,您在对 lengthZ 的递归调用中有错字。解决这个问题,我们遇到了一个新的类型错误:

No instance for (Num a)

这告诉我们,为了使用函数 (+),我们必须在类型声明中包含类型类 Num 作为约束。我们还为列表的元素包含了一个不同的类型变量,以便该函数可以应用于包含任何类型元素的列表。因此,我们将函数重写如下:

lengthz :: Num b => [a] -> b
lengthz [] = 0
lengthz n = 1 + lengthz (tail n)

正如我们所期望的那样工作:

ghci>> lengthz [1,2,3]
3
ghci>> lengthz []
0

关于list - 使用 tail 定义长度函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40480861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com