gpt4 book ai didi

haskell - 没有 (Show ([(Char, Char)] -> Char)) 的实例

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

所以我必须创建一个函数来找到一对带有第一个字母并返回第二个字母的函数。

我实际上找到了一个答案,但是使用 map 功能却找不到。

      lookUp :: Char -> [(Char, Char)] -> Char
lookUp x [] = x
lookUp x ( ( st,nd ): rst) | st == x = nd
| otherwise = lookUp x rst

我收到这条消息:
No instance for (Show ([(Char, Char)] -> Char))
arising from a use of `print'
Possible fix:
add an instance declaration for (Show ([(Char, Char
In a stmt of an interactive GHCi command: print it

最佳答案

你的代码很好,你只需要在 ghci 提示符下提供所有参数,例如

lookUp 'c' [('b','n'), ('c','q')]

应该给你'q'。

它提示它无法显示功能。任何时候它说它没有
有一个带有 -> in 的东西的 Show 实例,它提示它不能
显示一个函数。它只能显示对某些数据使用该函数的结果。

当你给它一些但不是全部数据时,Haskell 将其解释为一个新函数
这需要下一个参数,所以
lookUp 'c'

是一个函数,它将获取字符对列表并为您提供一个字符。
这就是它试图展示但不能展示的。

顺便说一下,几乎每次你收到“No instance for...”错误时,都是因为
你在参数上做错了 - 错过了一些,把它们放进去
错误的顺序。编译器试图通过建议您添加来提供帮助
一个实例,但可能您只需要检查您提供的写入类型
参数的正确顺序。

玩得开心学习 Haskell!

关于haskell - 没有 (Show ([(Char, Char)] -> Char)) 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12810490/

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