我正在学习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]“
这只是提供上下文的整个问题
答案 0 :(得分:5)
homerge
包含3个参数:类型为a -> b
的函数和两个类型为[a]
的列表。返回值是[a]
类型的另一个列表。
Ord
约束意味着第一个参数的返回类型必须是带有Ord
实例的类型,以便可以将这些值与<
,{{1} }等。
>
不需要Ord
约束,因此此功能可让您合并原本无法立即比较的值列表,例如复数。两个复数a
和a + bi
不能直接比较,但是您可以 按照它们的实部(检查c + di
)或虚部(检查a < c
。
b < d