【问题标题】:Sorting tuples in haskell lists对 haskell 列表中的元组进行排序
【发布时间】:2015-02-07 13:51:22
【问题描述】:

我想按类型列表中的第三个或第四个元素(比如 c 或 d)对元组列表进行排序:

myList = [(a,b,c,d,e)]

我知道元组是否属于(a,b) 类型,我可以使用以下方法:

mySort xmyList = sortBy (compare `on` snd) x

但是 sortBy 的类型不适用于长度大于 2 的元组(因此显然没有必要为 thdfth 编写访问器函数):

(a -> a -> Ordering) -> [a] -> [a]

【问题讨论】:

  • sortBy 的类型根本没有说明元组。

标签: list haskell tuples


【解决方案1】:

但是 sortBy 的类型不适用于长度更大的元组 两个以上

不,它实际上适用于任何列表。例如,如果您想对 c 进行排序,只需执行以下操作:

mySort xmyList = sortBy (compare `on` (\(a,b,c,d,e) -> c)) x

mySort xmyList = sortBy (comparing thirdOf5) x
   where thirdOf5 (_,_,c,_,_) = c

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多