15

鉴于以下情况,

module Foo where

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

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

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

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

4

1 回答 1

23

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

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

没关系,但是

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

不是。

于 2013-08-02T19:45:09.267 回答