我无法理解我的讲师希望我从这个问题中做什么。谁能帮我解释一下他想让我做什么?
定义插入排序算法的更高阶版本。那就是定义函数
insertBy :: Ord b => (a->b) -> a -> [a] -> [a]
inssortBy :: Ord b => (a->b) -> [a] -> [a]
这一点让我感到困惑: 这样 inssort fl 对列表 l 进行排序,使得元素 x 出现在 elementyif fx < f y 之前。
我无法理解我的讲师希望我从这个问题中做什么。谁能帮我解释一下他想让我做什么?
定义插入排序算法的更高阶版本。那就是定义函数
insertBy :: Ord b => (a->b) -> a -> [a] -> [a]
inssortBy :: Ord b => (a->b) -> [a] -> [a]
这一点让我感到困惑: 这样 inssort fl 对列表 l 进行排序,使得元素 x 出现在 elementyif fx < f y 之前。
如果您正在对数字进行排序,那么 x < y 的含义就很清楚了。但是,如果您要对字母进行分类怎么办?还是客户?或者其他没有明确(对计算机)订购的东西?
因此,您应该创建一个函数 f() 来定义排序过程的排序。那 f() 将接受字母或客户或其他任何内容,并将为计算机实际可以排序的每个返回一个整数。
至少,问题是这样描述的。我个人会设计一个谓词来接受两个项目,x 和 y,如果 x < y 则返回一个布尔值。但无论哪个都好。
该代码希望您重写插入排序算法,但使用函数作为参数 - 因此是更高阶的函数。
我想指出,这段代码,包括错字,似乎源于某所大学目前到期的一项工作——我在搜索“插入排序算法”时发现了这个页面,因为我复制粘贴了这个术语文件也是如此,包括错字。
从互联网上寻找代码是一项有风险的业务。我可以推荐插入排序算法维基百科条目,或者您的讲座幻灯片中提供的 Haskell 代码(您正在寻找“插入排序算法”和“高阶函数”),而不是您在 Stack 上放置的几个查询溢出?