は、リストから重複を削除する機能次のようなhaskellコードを高次関数にどのように変更しますか?
rmdups :: Eq a => [a] -> [a]
を定義します。たとえば、rmdups "ababca"
は を返します。 これは動作します:
rmdups :: Eq a => [a] -> [a]
rmdups [] = []
rmdups (x:xs) = x : rmdups (filter(/= x) xs)
これは動作しません、私が間違って何をやっている:
出力リストの要素の順序は、ここでは、私がこれまでに行ったことある重要ではありません
import Data.List (nub)
rmdups = nub
しかし、私はあなたがalloweていないことを前提としています
rmdups = map head . group . sort
これは、あなたが指定した例で動作します。それがうまくいかない例は何ですか? –
最後のコード行は機能しません。コンパイラはグループが範囲にないと言います。 –
ああ、baxbaxwalanuksiweが言っているように、あなたは '輸入 'が不足しているからです。今後の質問では、取得しているエラーメッセージを含める必要があります。 –