はじめに 投稿しようと思ったらすでに書こうとしていた内容が存在しておりました。 Lensってなに?どういう仕組みなの? が、自分なりの文章で投稿します。 Lensとは レコード型の要素に対して便利なゲッターとセッターを提供してくれます。 なぜか、ゲッターとセッターは同じ関数が使えてしまいます。 {-# LANGUAGE TemplateHaskell #-} import Control.Lens data Hoge = Hoge{ _hVal :: Int, _fuga :: Fuga }deriving Show data Fuga = Fuga{ _fVal :: String, _piyo :: Piyo }deriving Show newtype Piyo = Piyo{_pVal :: [Int]}deriving Show makeLenses ''Hoge makeLen