我有一个要求:
让我们考虑一下字符串之间的以下排序关系:s1小于s2 如果s1短于s2或它们具有相同的长度并且s1在字典上更小 比s2。用两个参数x和y编写一个名为ltstr的函数,该函数实现此顺序 关系。 编写一个获得2个参数的函数qs:一个列表和一个排序标准,然后对 使用快速排序算法,根据给定的标准给出列表。例如:
Main> qs ["Russia","Norway","Germany","Romania","France","Antigua and Barbuda","South Korea","Angola","Hungary"] ltstr
["Angola","Russia","Hungary","Antigua and Barbuda"]
我不确定如何在Haskell中准确地传递函数作为参数。这是代码框架
\begin{code}
ltstr s1 s2 = if length(s1) < length(s2) then s1
else if length(s1) == length (s2) && s1 < s2 then s1
else s2
qs (l:ls) crit = (qs smalls crit) ++ [l] ++ (qs biggs crit)
where
smalls = [ s | s <- ls,(crit s l) == s]
biggs = [ b | b <- ls,(crit b l) == l]
\end{code}