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 に答える