这在Haskell homerge中是什么意思::: Ord b =>(a-> b)-> [a]-> [a]-> [a]

时间:2019-03-06 20:28:44

标签: haskell

我正在学习Haskell,但我很难理解

的含义。
homerge :: Ord b => (a -> b) -> [a] -> [a] -> [a]

我们取一个元组并列出吗? 我很困惑,请帮帮我,谢谢

因此homerge将两个排序列表合并为一个排序列表。 但我不明白

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

“实施类似于合并排序的高阶插入排序算法hoMergeSort,不同之处在于,如果fun x < fun y where fun :: a -> b是由高阶合并排序作为输入的函数,则将元素x放置在元素y之前。 ,评估hoMergeSort fun xs的结果应为列表[y1,y2,...,yn]“ 这只是提供上下文的整个问题

1 个答案:

答案 0 :(得分:5)

homerge包含3个参数:类型为a -> b的函数和两个类型为[a]的列表。返回值是[a]类型的另一个列表。

Ord约束意味着第一个参数的返回类型必须是带有Ord实例的类型,以便可以将这些值与<,{{1} }等。

>不需要Ord约束,因此此功能可让您合并原本无法立即比较的值列表,例如复数。两个复数aa + bi不能直接比较,但是您可以 按照它们的实部(检查c + di)或虚部(检查a < c

b < d