gpt4 book ai didi

haskell - 类型签名缺少适当的绑定(bind) [Haskell]

转载 作者:行者123 更新时间:2023-12-01 11:45:30 25 4
gpt4 key购买 nike

我一直在谷歌搜索以找到答案,甚至在这里提出了一些问题。似乎这是一个模棱两可的错误,我无法弄清楚如何在我的实例中解决它。

违规代码如下:

pos :: (Eq a) => [a] -> a -> Int
pos [] _ = -1
pos (x:xs) y
| not $ elem y (x:xs) = -1
| x == y = 0
| otherwise = 1 + pos xs y

-- Get the same element from another range as one element of the first range.
refPos :: (Eq a) => [a] -> [b] -> a -> b
refPos r1 r2 e1 = r2 !! (r1 `pos` e1)

letterNumber :: (Eq a, Char a) => a -> Int
lettNumber x = refPos ['a'..'z'] [0..25] x

确切错误的文本是:

15:1 letterNumber 的类型签名缺少随附的绑定(bind)。

最初我输入的类型签名是 Char -> Int,但这不起作用(它说了一些关于 Eq 的内容,但我对 Haskell 太新,无法正确解释它)。所以我将类型签名更改为具有 Eq 类约束。如果有人能指出什么是错误的或解决方法,将不胜感激,因为这是我正在从事的项目的一个门挡问题。

最佳答案

您为 letterNumber 提供类型签名, 但随后为 lettNumber 提供绑定(bind).注意缺少的 er .

只需重命名 lettNumberletterNumber , 以匹配类型签名中的拼写。

此外,letterNumber 的正确类型签名是

letterNumber :: Char -> Int 

关于haskell - 类型签名缺少适当的绑定(bind) [Haskell],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15720960/

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