对不起,这个简单的问题只是我对哈斯克尔来说非常新.
我正在尝试编写一个函数"order",它将对由另一个函数"frequency"生成的元组列表进行排序(频率计算列表中不同元素的数量a给出一个这样的结果,比如>频率"aabbbccc",将结果,[(2,a),(3,b),(3,c)])按升序排列.我无法弄清楚如何写它.
如果我在前奏中写入>排序(频率分数),它将对其进行排序(分数是等级列表,即["a","b","c","c"].
但是当我尝试写一个函数时..
results :: [a] -> [(Int, a)]
results = sort (frequency score)
Run Code Online (Sandbox Code Playgroud)
遗憾的是,这种排序适用于太多的论点.
抱歉显而易见的问题,并提前感谢.
你忘了让你的功能参与争论.
results :: [a] -> [(Int, a)]
results score = sort (frequency score)
Run Code Online (Sandbox Code Playgroud)
没有它,编译器会看到你的类型签名,并推断为了返回类型的东西[a] -> [(Int, a)],sort必须采取另一个参数,而不是.
但是,接下来的问题是您无法对具有任意组件类型的元组列表进行排序.请参阅@ luqui的答案,了解如何处理.