我想制作一个
的节目我有以下代码:
lookUp :: Char -> [(Char, Char)] -> Char
lookUp a [] = []
lookUp a [(x,y),(xs,ys)]
| a == x = y : lookUp [(xs,ys)]
| otherwise = x : y : lookUp [(xs,ys)]
当我编译它时,我会犯很多错误:
无法匹配预期类型' char'实际类型[t0]
在' lookUp'
的等式中
依旧......
对不起,我对Haskell来说比较新。我很确定在使用元组([(x,y),(xs,ys)]
)递归处理时犯了一个错误,但我不知道如何更改它。有什么想法吗?
答案 0 :(得分:1)
您的代码修改将输入check:
-- lookUp :: we'll have GHC tell us the type signature
lookUp a [] = []
lookUp a ((x,y):pairs)
| a == x = y : lookUp a pairs
| otherwise = x : y : lookUp a pairs
一些明显的错误:
lookUp
时,你只用一个参数调用它(你忘记了a
参数)[(x,y),(xs,ys)]
仅匹配两对字符的列表。模式((x,y):pairs)
匹配非空对列表。第一对被解构为字符x
和y
,并且列表的剩余部分绑定到pairs
。使用:t
中的ghci
命令让GHC告诉您签名的类型。
现在,这是否是你想要的另一个问题。