我得到了这个功能:
foo [] = []
foo (x:xs) = foo us ++ foo ys
where us = filter (<=x) xs
ys = filter (>=x) xs
此函数的类型是 Ord a => [a] -> [b] 。
我不明白为什么输出类型是 [b] 而不是 [a]。我认为它应该是 [a] 因为输出列表的元素将是输入列表的元素的一部分。
我正在使用 Hugs,但我认为它不会改变任何东西。
我得到了这个功能:
foo [] = []
foo (x:xs) = foo us ++ foo ys
where us = filter (<=x) xs
ys = filter (>=x) xs
此函数的类型是 Ord a => [a] -> [b] 。
我不明白为什么输出类型是 [b] 而不是 [a]。我认为它应该是 [a] 因为输出列表的元素将是输入列表的元素的一部分。
我正在使用 Hugs,但我认为它不会改变任何东西。