如何在函数式编程语言中增加变量?
例如,我想这样做:
main :: IO ()
main = do
let i = 0
i = i + 1
print i
Run Code Online (Sandbox Code Playgroud)
预期产量:1.
我想转换IO [String]到[String]具有<-约束力.但是,我需要do在一个where声明中使用一个块来做到这一点,但是Haskell一直抱怨缩进.这是代码:
decompEventBlocks :: IO [String] -> IO [[String]]
decompEventBlocks words
| words' /= [] = block : (decompEventBlocks . drop $ (length block) words')
| otherwise = []
where
do
words' <- words
let block = (takeWhile (/="END") words')
Run Code Online (Sandbox Code Playgroud)
这是什么原因?我们如何do在where声明中使用块?而且,我们是否有机会在警卫面前发表一些声明?