Comment Comment by Peaker Haskell record syntax with lenses is workable: import Control.Lens data MyRecord = MyRecord { _a :: Int, _b :: MyRecord } makeLenses ''MyRecord Then you can use it nested like: over (b . b . a) (+5) myRecord parent Peaker 8 years ago