Lensにほとんど触れたことのない人にはこちらの記事がオススメです:Lensで行こう! - Just $ A sandbox Haskellでもオブジェクト指向をしましょう! Haskellは直接オブジェクト指向的な機能を提供してはいませんが、我らがLensの力を借りることでオブジェクト指向的な設計を意識したコーディングが可能です。 今回利用するのは主に以下のモジュールです。 Control.Lens.Lens Control.Lens.Getter Control.Lens.Setter Control.Lens.TH Lensのおさらい Lensを使ったことのある人にはおなじみだと思いますので、特に解説はしません。 type Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t -- Lens型(GetterやSett