【问题标题】:haskell: parse error using higher order functionshaskell:使用高阶函数解析错误
【发布时间】:2013-11-02 04:07:07
【问题描述】:

我正在尝试创建一种插入排序方法,该方法允许我根据项目的函数进行插入排序,例如,应用于 1 的函数可能大于应用于 2 的函数,反之亦然,具体取决于函数。

到目前为止,如果我可以将一个元素插入到列表的一部分中,我还有待解决。

insertBy :: Ord b => (a -> b) -> a -> [a] -> [a] 
insertBy f a [] = [a]
insertBy f a (x:xs) = if ( (f a)< (f x )) then a:x:xs else insertBy f a xs

但是,我在第二行遇到了解析错误。对不起,如果它真的很明显,但我看不到。

一旦我有了那部分,我将调用一个插入排序函数,该函数使用它对列表进行排序,但首先我需要这方面的帮助:(

编辑:确切的错误“模式 insertBy 中的解析错误”

【问题讨论】:

  • 在这类问题中,最好将您看到的错误信息告诉我们。
  • 当我将这个文本完全插入到一个模块中时,ghc 可以很好地编译它,并执行它应该做的事情,包括下面提到的错误。 hugs 似乎也是如此。
  • 这里的代码格式没有问题。我猜你的本地代码副本中出现了拼写错误或其他错误。

标签: haskell parse-error


【解决方案1】:

我想你希望最终的表达式是

x : insertBy f a xs

否则,在这种情况下,您将丢弃列表的第一个元素。

【讨论】:

  • 是的,你是对的,但我仍然遇到同样的错误。第 2 行有问题
  • insertBy 已在 haskell 库中定义。我通过将对 insertBy 的任何引用更改为 insertBy1 来修复它。也感谢那个错误!
猜你喜欢
  • 2013-05-08
  • 2013-05-07
  • 2019-11-10
  • 2017-04-21
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多