<div dir="ltr">Hello,<div><br></div><div>I have this newtype:</div><div><br></div><div><font face="monospace, monospace">newtype Awesome a = Awesome (StateT AwesomeState (ExceptT B.ByteString IO) a) deriving (Functor, Applicative, Monad, MonadIO, MonadError B.ByteString, MonadState AwesomeState)</font></div><div><br></div><div>AwesomeState is quite deeply nested record. I'm using lens package in my project and can use some basic primitives from that package. But today I read about 'zoom' from lens package and think it might help me write my code a bit faster and cleaner. Right now if I try to update something deeply nested in my state I do it by hand (pseudocode follows):</div><div><br></div><div><font face="monospace, monospace">smth <- use $ myState.thisField.otherField</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">myState.thisField.otherField .= smth { _someProperty = "aaa"</font><span style="font-family:monospace,monospace">, _otherThing = (smth^.otherThing) { _hereIsSomethingElse = 2 } </span><span style="font-family:monospace,monospace">}</span></div><div><br></div><div>and so on. I hope you get the picture. Now I though with zooming I would be able to do it more easily:</div><div><br></div><div><font face="monospace, monospace">zoom (myState.thisField.OtherField) $ do</font></div><div><font face="monospace, monospace">  someProperty .= "aaa"</font></div><div><font face="monospace, monospace">  otherThing.hereIsSomethingElse .= 2</font></div><div><br></div><div>But the problem is that if I try to use zoom I get an error message which I do not understand how to handle. Tried to search for information but couldn't get anything that I could understand (just found a single stackoverflow question which didn't clear it enough for me).</div><div><br></div><div>The error message:</div><div><br></div><div><div><font face="monospace, monospace">Couldn't match type ‘Control.Lens.Internal.Zoom.Zoomed Awesome’ with ‘Control.Lens.Internal.Zoom.Zoomed m0’</font></div><div><br></div><div>Anyone could suggest what it is that I need to do to be able to use 'zoom'? </div><div><br></div><div>Best regards,</div><div>Konstantin Saveljev</div></div></div>