我必须编写一个函数
sort3 :: String -> String -> String -> (String, String, String)
按功能(<=)
排序(也可以使用min或max)
例如:
sort3 "Is" "This" "Food"
("Food", "Is", "This")
sort3 "Car" "45" "Table"
("45","Car","Table")
答案 0 :(得分:2)
在对三个字符串 a , b 和 c 进行排序时,可以通过六种方式对字符串进行排序:
在这些答案中,关系 e 1 ≤e 2 ≤e 3 应该成立,其中< em> e i 元组中第 i 个元素。
因此,这意味着您可以通过以下方式实现该功能:
sort3 :: Ord a => a -> a -> a -> (a, a, a)
sort3 a b c | … <= … && … <= … = (…, …, …)
| … <= … && … <= … = (…, …, …)
| ⋮
作为示例,我在这里演示如何实现sort2
。我将sort3
留作练习:
sort2 :: Ord a => a -> a -> (a, a)
sort2 a b | a <= b = (a, b)
| otherwise = (b, a)
请注意,在实现sort2
时可以使用sort3
。确实,您可以利用三个sort2
调用来正确地对三元组进行排序。但是,这是一种稍微更先进的方法。我建议您首先打算在没有sort3
的情况下实现sort2
,然后在sort2
方面实现它。