【问题标题】:Haskell error on input `|' Failed no modules输入“|”时出现 Haskell 错误没有模块失败
【发布时间】:2013-03-16 17:17:32
【问题描述】:

我是 Haskell 的新手,遇到了一个非常奇怪的错误:

insertion el [] = [el]
insertion el (x:xs) = | el < x = el:x:xs
                      | otherwise = x:insertion el xs

这给了我这个错误,在管道之后的第二行中: 输入“|”解析错误 失败,已加载模块:无。

我真的不明白, 你有什么建议吗? 在此先感谢:)

【问题讨论】:

  • 去掉第一个'|'之前的'='
  • 非常感谢!我阅读的教程中有'=',所以我无法想象这会是问题所在。再次感谢:)
  • 什么教程?也许它可以在没有太多麻烦的情况下修复。

标签: haskell syntax


【解决方案1】:

在函数定义中使用守卫(管道符号)时,不要在函数名和参数后面加上等号。应该这样写:

insertion el [] = [el]
insertion el (x:xs)
   | el < x    = el:x:xs
   | otherwise = x:insertion el xs

第一个后卫不需要在下一行,但这往往是一般风格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    相关资源
    最近更新 更多