在Haskell中,为什么你不能在do块内部使用'in'来配合'let'使用,而在其他情况下必须这样做呢?
例如,在如下略显牵强的例子中:
例如,在如下略显牵强的例子中:
afunc :: Int -> Int
afunc a =
let x = 9 in
a * x
amfunc :: IO Int -> IO Int
amfunc a = do
let x = 9
a' <- a
return (a' * x)
这是一个容易记住的规则,但我不理解其原因。