Haskell:为什么多行让表达式出现语法错误?

时间:2013-08-02 19:38:55

标签: haskell syntax-error

鉴于以下内容,

module Foo where

main = do
  let foo = case 0 of
    0 -> 4
  return ()

GHC坚持认为我有语法错误:

Make.hs:5:5: parse error (possibly incorrect indentation)

为什么呢?我已经使用了Haskell一段时间了,看起来对我来说是正确的。

1 个答案:

答案 0 :(得分:17)

do语法中的多行表达式必须缩进到变量名之外:

main = do
  let foo = case 0 of
       0 -> 4
  return ()

没问题,但是

main = do
  let foo = case 0 of
      0 -> 4
  return ()

不是。

相关问题