Zoom instance over Free Monad
问题 I'm attempting to build a free monad (using free) which acts just like a StateT monad, but which allows you to also run monads over a base state AppState . I have a separate constructor LiftAction which holds those types. The idea is that you keep zoom ing Actions down until they reach AppState, which can store different states inside its extension map. Here was my earlier (failed) attempt using mtl: Lift through nested state transformers (mtl) Anyways, since it's basically a wrapper over