Haskell,仅通过第一个字段排序三重奏

时间:2017-01-12 18:25:25

标签: haskell

我有(Int, Int, Int)的元素列表 如何仅按第一个元素对此列表进行排序?
我可以处理成对,但有三个元素我有问题

2 个答案:

答案 0 :(得分:5)

如果为大小为3的元组定义了类似fst的函数:

fst3 :: (a, b, c) -> a
fst3 (a, _, _) = a

然后您可以使用comparing

import Data.List
import Data.Ord

sortByFst3 :: Ord a => [(a, b, c)] -> [(a, b, c)]
sortByFst3 = sortBy (comparing fst3)

答案 1 :(得分:0)

base 4.8.0以来,有Data.List。sortOn

import Data.List

lst = [(3,1,2), (2,1,3), (1,3,2)]

main = do
  let srt = sortOn (\(a,_,_) -> a) lst
  print $ srt

产量

[(1,3,2),(2,1,3),(3,1,2)]