<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>[tech]: TCM is using IORef to hold the states.  Is IORef significantly faster than StateT or other equivalent?  If references are really superior, how about the ST monad?<br>

</div></div></div></blockquote><div><br></div><div>I don&#39;t remember the exact numbers, since it was a while since I changed it, but I do remember that it made a significant difference. However, changing the monad implementation should be a very local change so I encourage you to try it out. ST have a couple of problems: extra parameter cluttering things up, and you can&#39;t do IO. We are using IO for debug printing and for exceptions. Using ErrorT or similar for exceptions I&#39;m pretty sure would kill performance.</div>

<div><br></div><div>/ Ulf</div><div><br></div><div> </div></div></div></div>