最近コード書いていて、若干無理に抽象化を進めたら、なんかLensが必要になったけれど、いざScalaでLensを使うとなると果たしてどれを使えばいいのかすぐに判断できなかったので、いい機会なのでまとめてみる。 「ちなみに、これ書いた時点のまとめだし、すぐ古くなるかもしれないし、抜けてるものもあるかもしれないよ!」といういつもどおりの注意書きを書いておきます。 2015年3月に追記案の定古くなったので、あまり参考にしないほうがいいよ! Scalaz https://github.com/scalaz/scalaz/blob/v7.0.0/core/src/main/scala/scalaz/Lens.scala 7にも6にもあるが、もういい加減finalでそうだしfinalでたし、使うとしたら7でしょう 良くも悪くも sealed trait LensFamily[-A1, +A2, +B1