<div dir="ltr">I know this part has been left incomplete when Stephen got a real job, but I have a question.<div>In <a href="http://dev.stephendiehl.com/fun/007_path.html">http://dev.stephendiehl.com/fun/007_path.html</a>, compiler steps are piped together using the Kleisli (>=>) operator, presumably the one from Control.Monad.</div><div><br></div><div>they also return some flavour of AST (typically Syn.Module or Core.Module). Assuming that the >=> is the one from Control.Monad, what is the purpose of this returned value (all the steps are in a compilerMonad and presumably would have to update the state w/ the new AST anyhow)?</div><div><br></div><div>Or is the intention to have a special >=> that also updates the state (but I wouldn't know how to deal w/ Syn.Core vs Core.Module)</div><div><br></div><div>I would understand some form of phantom type to ensure that compilation steps are in the right order, but as it is I'm puzzled.</div><div><br></div><div>Anybody has some insight?</div><div><br></div><div>Thanks,</div><div><br></div><div>  Maurizio</div></div>