鉴于以下情况,

module Foo where

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

GHC坚持认为我有语法错误:
Make.hs:5:5: parse error (possibly incorrect indentation)

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

最佳答案

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

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

可以,但是
main = do
  let foo = case 0 of
      0 -> 4
  return ()

不是。

08-26 20:03
查看更多