レコード内の特定の値に基づいて並べ替えを実行したいと思います。そのような私はlensSort
機能にレンズを渡すことを考えていたが、私はそれを動作させることができませんでした。レンズを関数に渡す
理想的には私は私はこの作業を取得することができないんだ、と心配私は吠えされる可能性があります。この
lensSort :: HasLens a => Lens' a b -> a -> a -> -> Ordering
lensSort lens x y | x ^. lens > y ^. lens = GT
| x ^. lens < y ^. lens = LT
| otherwise = GT
ような何かを行うと
data Rectangle = Rectangle { _height :: Int, _width :: Int }
makeLenses'' Rectangle
let foo = [Rectangle 1 2, Rectangle 2 1]
sortBy (lensSort height) foo
ようなもので、それを呼び出すことができる可能性間違った木を完全に上に置いて、私はまだハスケルにとっては新しいです。
'comparison'でこれを行うのは素晴らしいヒントです、ありがとう – eddiec