gpt4 book ai didi

Haskell 新手 : No instance for Show in map function

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

在 GHCI 中,我输入以下内容:

map (+1) [1..10]

返回
[2,3,4,5,6,7,8,9,10,11]

到目前为止,一切都很好。

现在我输入:
min (map (+1) [1..10])

我收到以下错误消息:
No instance for (Show ([b0] -> [b0]))
arising from a use of `print'
Possible fix: add an instance declaration for (Show ([b0] -> [b0]))
In a stmt of an interactive GHCi command: print it

这对我来说很奇怪。为什么 Haskell 认为我正在尝试打印任何参数,我该如何解决这个问题?

最佳答案

问题是 min接受两个参数(并返回两者中的最小值),但您只指定了一个;你想要minimum ,适用于列表的版本。

具体来说,发生此错误是因为 GHCi 尝试打印出您评估的表达式的结果,但在这种情况下,您已应用 min到一个参数,产生另一个函数。1 GHCi 尽职尽责地尝试将其打印出来,但它失败了,因为函数不是 Show 的实例, 可以表示为显示字符串的标准类型类。

1 在 Haskell 中,所有函数都有一个参数,而多参数的函数是由返回其他函数的函数组成的;例如,将两个整数相加的函数可能具有 Integer -> Integer -> Integer 类型。 ,即 Integer -> (Integer -> Integer) — 一个函数接受一个整数并返回另一个函数,该函数本身接受一个整数,并返回一个整数。值得庆幸的是,您不必经常以如此明确的方式考虑这一点,否则它会变得非常困惑!

关于Haskell 新手 : No instance for Show in map function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8864688/

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