4 syntax haskell indentation let do-notation
在下面的Haskell代码中,我得到一个错误"输入中的解析错误".从我读过的,我用过的缩进应该没问题.事实上,我在代码的其他地方使用'let'和'in'进行了类似的缩进('let'与'in'对齐).我打破了什么规则会导致这个'in'出现问题?如果我在'in'前面添加一个空格(使其比'let'更加一个空格),它编译得很好.
runTests :: IO ()
runTests = do
let results = fmap testLispExpr testLispText
resultStrings = fmap show results
putSeq (x:xs) = do putStrLn x
putSeq xs
putSeq [] = return ()
in putSeq resultStrings
Run Code Online (Sandbox Code Playgroud)
所有帮助表示赞赏.提前致谢.
letdo块中的语法有点滑稽.如果你想使用in,你必须将它缩进到右侧let.或者,您可以跳过in,并且块let的其余部分将显示绑定do.
正如ØrjanJohansen指出的那样,do在这种情况下根本不需要; 你可以简单地把它留下来.他们也注意到你可以写
do
let ....
....
putSeq resultStrings
-- ..... (more `do` statements)
-- ^^ must all start on the same column
Run Code Online (Sandbox Code Playgroud)
并且真的让事情变得干净