2015-02-07 152 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