让proc表示缩进

时间:2014-07-23 01:45:28

标签: 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

测试编译,但test2不解析。是否可以在=?

之后将案例放在单独的行上

1 个答案:

答案 0 :(得分:14)

这与proc表示法无关。在case绑定起始名称后,let必须至少缩进为一个字符。

例如,这会编译:

test x =
  let y =
       case x of
         3 -> 2
         1 -> 1
         _ -> 0
  in ()

这样做:

test2 x =
  let abcdefghi =
       case x of
         3 -> 2
         1 -> 1
         _ -> 0
  in ()

但这不是:

test3 x =
  let abcdefghi =
      case x of
        3 -> 2
        1 -> 1
        _ -> 0
  in ()

因为caseabcdefghi的第一个字符处于同一级别。