高阶函数

时间:2011-04-01 12:43:17

标签: function higher-order-functions

我无法理解讲师希望我从这个问题中做些什么。任何人都可以帮我解释一下他希望我做什么吗?

定义插入排序算法的高阶版本。那是定义 功能

insertBy :: Ord b => (a->b) -> a -> [a] -> [a] 

inssortBy :: Ord b => (a->b) -> [a] -> [a]

这一点让我感到困惑: 使得inssort f l对列表l进行排序,使得元素x在elementyif f x<之前出现。 f y。

2 个答案:

答案 0 :(得分:1)

如果你正在排序数字,那么很清楚x<是指。但是如果你要整理信件怎么办?还是客户?或者其他没有明确(到电脑)订购的东西?

所以你应该创建一个函数f()来定义排序过程的排序。 f()将接受字母或客户或其他任何内容,并为计算机实际可以排序的每个字节返回一个整数。

至少,这就是问题的描述方式。我本人会设计一个谓词,它接受两个项目x和y,并返回一个布尔值,如果x<年。但无论哪个都没问题。

答案 1 :(得分:0)

代码要求您重写插入排序算法,但使用函数作为参数 - 因此是更高阶函数。

我想指出,这个代码,包括错字,似乎源于某个大学目前正在进行的一项工作 - 我在搜索“插入排序algortihm”时找到了这个页面,因为我复制粘贴了这个术语除了文件外,还包括拼写错误。

从互联网上寻找代码是一项有风险的业务。我可能会推荐插入排序算法维基百科条目,或者演讲幻灯片中提供的Haskell代码(您正在寻找'插入排序算法'和'高阶函数),而不是您在Stack上放置的几个查询溢出?