Nat*_*ski 3 haskell types compilation
我一直在谷歌上寻找答案,甚至在这里问了几个问题.这似乎是一个模棱两可的错误,我无法弄清楚如何在我的实例中解决它.
违规代码如下:
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
Run Code Online (Sandbox Code Playgroud)
确切错误的文本是:
15:1 letterNumber的类型签名缺少附带的绑定.
最初我输入的类型签名是Char - > Int,但是这不起作用(它说了一些关于Eq的东西,但我太新了,Haskell也不能正确地解释它).所以我改变了类型签名以具有Eq类约束.如果有人可以指出什么是错误或解决方法,那将非常感激,因为这是我正在进行的项目的门槛问题.
您提供类型签名letterNumber,但随后提供绑定lettNumber.注意缺少er.
只需重命名lettNumber为letterNumber,以匹配类型签名中的拼写.
另外,正确的类型签名letterNumber是
letterNumber :: Char -> Int
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2715 次 |
| 最近记录: |