Monads aren&#39;t necessarily EDSLs by themselves but are often shipped with functions that provide what would make them an EDSL. †Take the State monad, it has at least a get and a put function to work with the state in the monad. †That get and put are commands that function only within the domain of the State monad, and therefore could be thought of as an embedded language that is used to work with the state encapsulated in the State Monad computation.<div>
<br></div><div>The way I like to think of it, a Monad provides an environment or a context within which it is very convenient to express an EDSL, and that this style of coding should be encouraged! †:-)</div><div><br></div>
<div>Dave</div><div><br><div class="gmail_quote">2010/2/25 GŁnther Schmidt <span dir="ltr">&lt;<a href="mailto:gue.schmidt@web.de">gue.schmidt@web.de</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi everyone,<br>
<br>
in my attempts to remove boilerplate and thus to do more &quot;abstraction&quot; I come across a number of interesting things and suggestions.<br>
<br>
Especially blog posts from Dan Piponi and also Heinrich Apfelmus. I think what they both are saying is that you can construct / implement some sort of 2 layered monad which can then have more than one interpretation.<br>

<br>
In the responses to one of my posts on DSLs Dan Piponi also points out that he considers monads also to be DSLs. It didn&#39;t click with me when he said it, but reading more of his blog posts made me remember that.<br>
<br>
Now I know this is probably something obvious to most haskellers, but to me it&#39;s not.<br>
<br>
Did I understand this correctly so far?<br>
<br>
GŁnther<br>
<br>
<br>
_______________________________________________<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/mailman/listinfo/haskell-cafe</a><br>
</blockquote></div><br></div>