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