It's an interesting approach. Your Then constructor maps to my Bind object more naturally than &gt;&gt;= does.&nbsp;<div><br></div><div>The main reason for using objects rather than functions (closures) in C++ is that the compiler may be able to optimize/inline more code. Closures are not first class citizens in C++ -- they cannot be returned from functions or stored in variables without being converted to clunky std::function.<div><br></div><div>BTW, I'm studying your reactive banana library trying to learn more about FRP.&nbsp;</div><div><br></div><div>--Bartosz<br><br>On Thursday, June 21, 2012 9:21:34 AM UTC-7, Heinrich Apfelmus wrote:<blockquote class="gmail_quote" style="margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">Bartosz Milewski wrote:
<br>&gt; I published a blog for C++ programmers about the advantages of using the
<br>&gt; continuation monad in dealing with asynchronous API, concurrency, and
<br>&gt; parallelism. I explained the concepts in Haskell and the translated them
<br>&gt; into C++.
<br>&gt; <a href="http://fpcomplete.com/asynchronous-api-in-c-and-the-continuation-monad/" target="_blank">http://fpcomplete.com/<wbr>asynchronous-api-in-c-and-the-<wbr>continuation-monad/</a>
<br>
<br>I always found the continuation monad to be hard to understand. An 
<br>easier yet equivalent approach is presented in my "Operational Monad 
<br>Tutorial" [1].
<br>
<br>&nbsp; &nbsp;[1]: <a href="http://themonadreader.wordpress.com/2010/01/26/issue-15/" target="_blank">http://themonadreader.<wbr>wordpress.com/2010/01/26/<wbr>issue-15/</a>
<br>&nbsp; &nbsp;[2]: <a href="http://www.haskell.org/haskellwiki/Operational" target="_blank">http://www.haskell.org/<wbr>haskellwiki/Operational</a>
<br>
<br>
<br>Best regards,
<br>Heinrich Apfelmus
<br>
<br>--
<br><a href="http://apfelmus.nfshost.com" target="_blank">http://apfelmus.nfshost.com</a>
<br>
<br>
<br>______________________________<wbr>_________________
<br>Haskell-Cafe mailing list
<br><a href="mailto:Haskell-Cafe@haskell.org" target="_blank">Haskell-Cafe@haskell.org</a>
<br><a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/<wbr>mailman/listinfo/haskell-cafe</a>
<br></blockquote></div></div>