嗨,我是haskell的初学者。我正在尝试从此元组列表中获取前 3 项:
[("and",2),("cat",1),("dog",1),("rabbit",1),("the",2)]
首先,我按频率和降序对列表进行排序:
sortWords = sortBy(flip compare `on` snd)
这给了我结果:
[("and",2),("the",2),("cat",1),("dog",1),("rabbit",1)]
然后我知道我可以做这个功能:
take 3 [("and",2),("the",2),("cat",1),("dog",1),("rabbit",1)]
这给了我想要的结果[("and",2),("the",2),("cat",1)]
但是,我希望能够将take
功能合并到sortWords
功能中。问题是,当我尝试这样做时,例如:
sortWords = take 3 (sortBy(flip compare `on` snd))
这不起作用。
理想情况下,我想保留sortWords
作为最终功能,所以我不想将它传递给另一个能够执行该take
功能。如果take
在调用之前有一种方法sortWords
可以解决,但是我也尝试过这个,发现所取的单词没有首先排序,因此没有给我想要的结果。
谢谢