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.