2013-11-02 56 views
0

我想創建一個插入排序方法,允許我做一個基於項目的函數的插入排序,例如,應用於1的函數可能大於應用於2的函數反之亦然,具體取決於功能。haskell:解析錯誤使用高階函數

我有這個到目前爲止工作,如果我可以插入一個元素到列表的一部分。

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」

+0

在這樣的問題,這將有利於我如果你會給我們提供你所看到的錯誤信息。 –

+0

當我正確地將這個文本插入到模塊中時,'ghc'編譯得很好,並且完成它應該包含的內容,包括下面提到的錯誤。 「擁抱」似乎也是如此。 –

+0

這裏的代碼格式沒有問題。我猜你已經在你的本地代碼副本中輸入了錯字或其他錯誤。 – kqr

回答

1

我想你想的最終表現是

x : insertBy f a xs 

否則你丟棄列表的第一個元素在這種情況下,

+0

是的,你是對的,但我仍然得到同樣的錯誤。第2行有錯誤 – John

+0

insertBy已經在haskell庫中定義了。我通過更改對insertBy1的insertBy的引用來修復它。謝謝你的錯誤! – John