在 haskell 工作,发现奇怪的行为,将其剥离为裸露的骨头
这个作品
a :: Bool
a = case True of
True -> True
False -> False
但是当我尝试
b :: IO Bool
b = do
let b' = case True of
True -> True
False -> False
return b'
我明白了
ghci>:l test.hs
[1 of 1] Compiling Main ( test.hs, interpreted )
test.hs:16:14: parse error on input ‘->’
Failed, modules loaded: none.
所以我尝试
c :: IO Bool
c = do
let c' = case True of
True -> True
False -> False
return c'
这有效。
什么?为什么?在这种情况下,为什么我需要额外的缩进?我在这方面找不到任何东西,可能是因为这些关键字在日常语言中是如此简短和常见。是否有一些规范可以解释这种行为?