让proc表示缩进

yon*_*ong 5 haskell indentation

我有以下代码

{-# LANGUAGE Arrows #-}

test :: Int -> Int
test =
  proc x -> do
    let x = case x of
              3 -> 2
              2 -> 1
              _ -> 0
    returnA -< x

test2 =
  proc x -> do
    let x =
      case x of
        3 -> 2
        2 -> 1
        _ -> 0
    returnA -< x
Run Code Online (Sandbox Code Playgroud)

测试编译,但test2不解析.在=后可以将案例放在单独的行上吗?

Dav*_*vid 14

这与proc符号无关.将case必须至少为缩进为开始名后一个字符被束缚let.

例如,这编译:

test x =
  let y =
       case x of
         3 -> 2
         1 -> 1
         _ -> 0
  in ()
Run Code Online (Sandbox Code Playgroud)

这样做:

test2 x =
  let abcdefghi =
       case x of
         3 -> 2
         1 -> 1
         _ -> 0
  in ()
Run Code Online (Sandbox Code Playgroud)

但这不是:

test3 x =
  let abcdefghi =
      case x of
        3 -> 2
        1 -> 1
        _ -> 0
  in ()
Run Code Online (Sandbox Code Playgroud)

因为它case与第一个字符处于同一级别abcdefghi.