7

A のいくつかのレンズを使用して関数を作成したいと考えていますA -> Bool。たとえば、次のようになります。

data A = A { _foo :: Int, _bar :: Int }
makeLenses ''A

l :: [A]

l' = filter (\a -> a^.foo > 100) l

フィルタの述語は少しぎこちなく見えます。((>100).(^.foo))あまり良くありません。レンズがなければ、 を使用します((>100) . foo)

でそのような述語を作成する良い方法はありlensますか? のような述語も許可するのが理想的(\a -> a^.foo > 100 && a^.bar < 50)です。

4

1 に答える 1