0

我正在尝试创建一个插入排序方法,该方法允许我根据项目的函数进行插入排序,例如,应用于 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 中的解析错误”

4

1 回答 1

1

我想你希望最终的表达是

x : insertBy f a xs

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

于 2013-11-02T04:15:54.097 回答