And this is why they need human brains in The Matrix
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 instance Monad Maybe where
return = Just
Nothing >>= _ = Nothing
Just x >>= f = f x
(And is not really related to the discussion)