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)
です。