gpt4 book ai didi

haskell - 这个 Haskell 输入缩进有什么问题?

转载 作者:行者123 更新时间:2023-12-04 23:48:34 26 4
gpt4 key购买 nike

在下面的 Haskell 代码中,我收到一个错误“输入 'in' 上的解析错误”。根据我的阅读,我使用的缩进应该没问题。事实上,我在代码的其他地方成功地使用了具有类似缩进的 'let' 和 'in'('let' 与 'in' 对齐)。我打破了什么规则导致这个“in”成为一个问题?如果我在'in'前面添加一个空格(使其比'let'多1个空格)它编译得很好。

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

感谢所有帮助。提前致谢。

最佳答案

let do 中的语法 block 有点好笑。如果你想使用 in ,您必须将其缩进到 let 的右侧.或者,您可以省略 inlet do 的其余部分将显示绑定(bind)。堵塞:

           do
let ....
....
putSeq resultStrings
-- ..... (more `do` statements)
-- ^^ must all start on the same column

编辑

正如 Ørjan Johansen 所说, do在这种情况下实际上根本不需要,因为在 let 之后只有一个语句.所以另一个选择是省略 do同时保持 in关键词。他们还注意到您也可以将其写为
runTests = mapM (print . testListExpr) testLispText

并真正让事情变得干净。

关于haskell - 这个 Haskell 输入缩进有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28448931/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com