2017-03-24 15 views
0

リストを指定して重複を削除してソートし、リストの先頭に "0"を付けて確実に間違ったソート関数を作成しようとしていますひどくソートされた新しいリストの長さは元のリストのサイズと同じです。Haskellでの入力位置の解析エラー

これは私のコードです:

dodgySort4 xs = (replicate ((length xs) - (length (badQuick xs)) 0) : badQuick xs 
    where 
    badQuick [] = [] 
    badQuick (x:xs) = (badQuick lesser) ++ [x] ++ (badQuick greater) 
     where 
      lesser = filter (< x) xs 
      greater = filter (> x) xs 

はしかし、私は、私は問題が何であるかはかなりわからないんだけど、最初の冒頭に「入力時にエラーを解析 『』」エラーを得続けます?

+0

@kennytm質問を書いている間に私が間違っていたwhoops。実際のコードには新しい行がありません – reetyn

+0

実際のエラーはありませんか?それとも?ちなみに、あなたの 'badQuick'は本当に悪いです、' x'に等しいすべての値を失います。 'badQuick [1,1,1,1,1,1,1]'は '[1]'になります。 – Zeta

+0

@Zetaいいえエラーがあります!私はちょうどその質問にコードを書くときにその新しい行を追加しました。とにかく、それはbadQuickの目的です - それはすべての重複を削除するので、私は元のリストと同じ長さになるように0で頭を埋めます...それは長さのプロパティをテストするquickCheckを感じることを意味します(xs)= length(dodgySort4(x) – reetyn

答えて

2

whereについては、)replicateには一致しません。タイプも一致しません。:から++に変更して問題を解決してください。

dodgySort4 :: (Ord a, Num a) => [a] -> [a] 
dodgySort4 xs = (replicate ((length xs) - (length (badQuick xs))) 0) ++ badQuick xs 
    where ... 
+0

ありがとうございました!それを修正しました〜 – reetyn

+0

将来、これらの問題を回避するには、関数アプリケーションが ' '。 – Lazersmoke

関連する問題