こんにちは私は初心者です。Haskell - 並べ替えの後にタプルリストからn個の項目を取り出す方法
[("and",2),("the",2),("cat",1),("dog",1),("rabbit",1)]
:これは私に結果を与える
sortWords = sortBy(flip compare `on` snd)
:周波数でリストをソートし、降順
[("and",2),("cat",1),("dog",1),("rabbit",1),("the",2)]
まずI:私はこのタプルのリストから最初の3つの項目を取得しようとしています
次に、私は機能を果たすことができることを知っています:
take 3 [("and",2),("the",2),("cat",1),("dog",1),("rabbit",1)]
しかし私に
[("and",2),("the",2),("cat",1)]
の希望結果を与える
は、私がsortWords
関数にtake
機能を組み込むことができるようにしたいです。問題は、これを実行しようとすると次のようになります。
sortWords = take 3 (sortBy(flip compare `on` snd))
これは機能しません。
機能を実行できるように、私はそれを別の関数に渡したくないので、理想的には、sortWords
を終了関数として保持したいと考えています。しかし、take
を実行して、解決策になるsortWords
を呼び出す前に、私はこれを試して、取った言葉が最初にソートされていないことを知っています。
ここでの問題はsortBy (flip compare `on` snd)
がタプルのリストではないということです
それは働いた。ありがとうございました :) – k1r4n