<div class="gmail_quote">On Fri, Aug 6, 2010 at 11:17 AM, aditya siram <span dir="ltr">&lt;<a href="mailto:aditya.siram@gmail.com">aditya.siram@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

I&#39;m still a little iffy on why the monad concept isn&#39;t used in other languages.</blockquote><div><br></div><div>The greatest feat that monads have accomplished, in my opinion, is providing the right mathematical abstraction for declaring side-effect and stateful computation in a pure functional language. For the first time it was now possible for a pure functional programming language to be a general purpose programming language. That&#39;s was quite an accomplishment!</div>

<div><br></div><div>The second most important feat of monads was their close offspring, the monad transformers. These guys gave pure functional programmers the ability to maintain invariants on which side-effect/stateful computations their end users are going to use. This enhanced verifiability by a measured mix of pure and impure.</div>

<div><br></div><div>The other languages that you mention are impure. So feat #1 is pointless since they were already general purpose without monads, and feat #2 is not realistically achievable since impure languages generally don&#39;t have a way of restricting a function from having arbitrary side-effects.</div>

<div><br></div><div>There have been some clever things done with monads aside from #1 and #2. Parsec is one, but it seems applicative functors are a better match for the parsing domain. Other things are &quot;neat&quot;, but not killer features that would turn the head of a pragmatist of the impure type in my opinion.</div>

<div><br></div><div>So, that is why I think the monad concept isn&#39;t generally used in other languages.</div><div><br></div><div>David</div><div><br></div></div>-- <br>David Sankel<br>Sankel Software<br><a href="http://www.sankelsoftware.com">www.sankelsoftware.com</a><br>

585 617 4748 (Office)<br>