我正在学习Haskell,但我很难理解
homerge :: Ord b => (a -> b) -> [a] -> [a] -> [a]
Run Code Online (Sandbox Code Playgroud)
我们取一个元组并列出?我很困惑,请帮帮我,谢谢
因此homerge将两个排序列表合并为一个排序列表。但我不明白
homerge :: Ord b => (a -> b) -> [a] -> [a] -> [a]
Run Code Online (Sandbox Code Playgroud)
“实施高阶插入排序算法hoMergeSort与合并排序类似,不同之处在于,如果元素x放置在元素y之前,如果它fun x < fun y where fun :: a -> b是由高阶合并排序作为输入的函数。换句话说,评估hoMergeSort fun xs的结果应该是一个列表[y1,y2,...,yn]“这只是为了提供上下文的整个问题
homerge接受3个参数:type的函数和type的a -> b两个列表[a]。返回值是type的另一个列表[a]。
该Ord约束装置,所述第一参数的返回类型必须与一个类型Ord实例,因此这些值可与被比较<,>等等。
一个Ord是约束不是必需的a,所以该功能允许用户合并不属于否则直接比较值的列表,例如复数。两个复数a + bi和c + di没有直接的可比性,但你可以通过自己的真实部分(检查命令他们a < c)或虚部(检查b < d)。
homerge realPart [2 :+ 5] [3 :+ 4] -- [2 :+ 5, 3 :+ 4]
homerge imagPart [2 :+ 5] [3 :+ 4] -- [3 :+ 4, 2 :+ 5]
Run Code Online (Sandbox Code Playgroud)