很傻,但我甚至无法用空格和标签解决问题。有时我认为问题不在我身上,而是在Haskell中。为什么Python没有同样的问题?
我的代码是:
lookups :: (Eq a) => a -> [(a,b)] -> [b]
lookups x ys = do y <- ys
if fst y == x then return (snd y)
我有一个错误:parse error (possibly incorrect indentation or mismatched brackets)
。我的代码只使用空格。
答案 0 :(得分:6)
您的else
需要if-then
。 Haskell中的所有if
必须具有then
和else
,否则表达式不会始终返回值。在Haskell中,所有表达式都必须返回一个值,因此没有if-then
的{{1}}不是表达式,因此解析错误。如果else
:
fst y /= x