I suspect this is why I don't "understand" Haskell programmers (I do understand a reasonable amount of Haskell).<p>To me, it looks like you haven't "done" anything at all. You haven't emulated a single instruction. This part of the emulator in C++ would be a couple of structs and helper functions thrown at the top of the file.<p>As far as I can see, you've just written a bunch of very complicated code and monads, to get you to place would would have started at in a non-functional language. In that case, what exactly have you gained by using Haskell at all?<p>P.S. Sorry if this comment comes across as insulting / argumentative. I do not have the time to write it in a more pleasing way.