Haskell使用代理订单排序不可共享的列表

qre*_*est 8 sorting haskell

假设我有x :: [(n, a)]n是数字,a是不可订购的项目(不是Ord类).

我想用n对这个列表进行排序.

我做不到sort x因为a不可订购.我可以用a索引替换然后使用组装新列表,!!但这似乎是一个糟糕的解决方案.

备择方案?

qre*_*est 12

啊.没关系.sortBy.

  • 不仅仅是`sortBy`而是`sortBy(比较fst)`(如果你从未听说过`compare`函数). (10认同)
  • [Hoogle](http://haskell.org/hoogle)?很酷,每当我需要知道功能在哪里时,我总是问Neil Mitchell ... (3认同)

Nor*_*sey 5

你要

sortBy (compare `on` fst)
Run Code Online (Sandbox Code Playgroud)

或类似的东西.您将on在模块中找到定义Data.Function,并sortByData.List其中导入,您需要导入.