gpt4 book ai didi

Haskell 中的函数定义

转载 作者:行者123 更新时间:2023-12-04 16:26:13 26 4
gpt4 key购买 nike

我开始通过“Learn You a Haskell for Great Good!”开始学习 Haskell。我犯了一个奇怪的错误,我找不到原因。

这是我输入的代码:

let xs = [if x < 3 then "bang" else "boom" | x <- xs]

以及 GHCi 中的错误文本:
No instance for (Num [Char])
arising from the literal `3'
Possible fix: add an instance declaration for (Num [Char])
In the second argument of `(<)', namely `(3)'
In the expression: x < (3)
In the expression: if x < (3) then "bang" else "boom"

但是当我输入:
let boom xs = [if x < 3 then "bang" else "boom" | x <- xs]

这是书的例子,我没有任何问题。

有人可以解释我的错误吗?

最佳答案

您对 xs 的定义是递归的,也就是说你正在使用 xs在它自己的定义里面。我不认为那是你的意图。

由于您使用的是 "bang""boom"在列表推导式中,Haskell 知道 xs必须是字符串列表(因为 xs 等于列表推导的结果)。进一步你说xxs 的一个元素( x <- xs ), 所以 x必须是字符串(又名 [Char] )。不管你怎么做x < 3 ,这意味着 x是一个数字。错误消息的意思是“字符串不是数字”。

关于Haskell 中的函数定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15867431/

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