我有以下代码
{-# 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不解析。是否可以在=?
之后将案例放在单独的行上答案 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 ()
因为case
与abcdefghi
的第一个字符处于同一级别。