2015-02-07 89 views
0

我想用第三或第四个元素进行排序元组的列表(例如c或d)在类型列表:Haskell中的列表排序元组

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

我知道如果元组是类型(a,b)我可以用下面的办法:

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

但sortBy的类型不会与长度上的元组工作大于二(所以显然没有点写的存取功能thdfth):

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

类型的'sortBy'说什么都没有关于元组。 – 2015-02-07 19:20:17

回答

4

但sortBy的类型不会与长度大 超过两

不,它实际上适用于任何名单上的元组工作。例如,如果要排序的c,只是做:

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

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