有没有一种变体
sortBy :: (a -> a -> Ordering) -> [a] -> [a]
在 Data.List 中,有一个函数可以让我使用 a -> a -> Maybe Ordering
的排序函数,而不是 a -> a -> Ordering
的排序函数?
这个变体的作用是:
sortBy' :: (a -> a -> Maybe Ordering) -> [a] -> Maybe [a]
如果在排序期间调用
a -> a -> Maybe Ordering
返回 Nothing
,sortBy'
将返回 Nothing
。否则,它将返回包裹在 Just
中的排序列表。如果还没有这样的变体,请问你能帮我构建一个吗?(最好与
sortBy
一样高效。)
sortBy
传递有效数据?是否有特定的应用场景?如果您这样做,我们可能能够更好地提供帮助。 - dkasakNothing
,那么你可以任意选择其中一个先出现。但在这种情况下,你也可以让函数返回LT
而不是Nothing
,仍然可以使用sortBy
。 - chepnerx<y
,然后又得出y<x
。 - dfeuerx<y,y<z
都成功(isJust
)且结果为LT
时,比较x<z
必须成功(对于GT,EQ
也是如此,包括混合情况)。当发生这种情况并且排序返回Just
时,sort
执行的比较应该足以保证比较始终成功。 - chi