<div dir="ltr"><br><br><div class="gmail_quote">On Mon, May 24, 2010 at 5:35 PM, Gour <span dir="ltr">&lt;<a href="mailto:gour@gour-nitai.com">gour@gour-nitai.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
On Mon, 24 May 2010 15:26:02 +0300<br>
&gt;&gt;&gt;&gt;&gt;&gt; &quot;Michael&quot; == &lt;<a href="mailto:michael@snoyman.com">michael@snoyman.com</a>&gt; wrote:<br>
<br>
Hello Michael,<br>
<br>
Michael&gt; I&#39;m very happy to announce the release of yesod 0.2.0. Yesod<br>
Michael&gt; is a Haskell web framework for type-safe, RESTful web<br>
Michael&gt; applications.<br>
<br>
Congratulations for new release and enhanced web-site!<br>
<br>
Michael&gt; The next feature I&#39;m targeting for Yesod is persistence. If<br>
Michael&gt; anyone has any thoughts to share on this topic, please send me<br>
Michael&gt; an e-mail.<br>
<br>
Do you have any rough idea about deploying RDBMS in Yesod?<br>
<br>
<br>
Otoh, this release of Yesod is coming along the 1st public release of<br>
Snap framework...pretty exciting time for Haskell web development.<br>
<br>
However, for someone who is still using Hakyll for his web needs (and<br>
I must say: &quot;I like it!&quot;), but may ponder into some Haskell framework<br>
in the future, I&#39;d be interested to hear about some comparison between<br>
Yesod &amp; Snap as far as features, methodology, target users, ease of<br>
deploying etc. are concerned?<br>
<br><br></blockquote><div>I would say that Yesod and Snap are very orthogonal projects. Without offense to the Snap authors, I don&#39;t really think Snap is a framework; it&#39;s much more low-level than that. As they put it, it&#39;s at the level of a Java servlet container. In that sense, it&#39;s slightly higher-level than WAI, but far more low-level than Yesod (or turbinado, happstack, etc).</div>
<div><br></div><div>I did some work after the Snap release to actually get Yesod running on top of Snap. Gregory has been very helpful, and will hopefully be releasing a newer version of snap-server that provides the functionality I&#39;m missing. (Basically, Snap processes url-encoded form data, while WAI specifies that the POST body be passed to the application.)</div>
<div><br></div><div>If you want a real comparison of where the two differ on things, I guess this will suffice:</div><div><br></div><div>* Yesod uses the WAI definition of enumerator while Snap uses the iteratee package. The former is much simpler, the latter more powerful. I&#39;d be very interested in a performance comparison of the two, my instinct tells me the former wins.</div>
<div><br></div><div>* Snap has Heist, which is an XML based templating system, while Yesod uses Hamlet. However, neither framework is actually tied down to these templating systems. In fact, Snap doesn&#39;t even depend on Heist.</div>
<div><br></div><div>* Yesod has type-safe URLs, I don&#39;t believe Snap has any similar feature. However, as I mentioned already, Snap is lower level than Yesod, so you could easily implement type-safe URLs on top of Snap.</div>
<div><br></div><div>* Some design decisions, notably they use a mutable states for modifying request and response values while Yesod uses a Reader for the request, and writer for response headers and actually returns a value for the response body/content type.</div>
<div><br></div><div>I&#39;m sure there are many more differences, but the main point is this: these two projects are very different types of frameworks. And I hope and expect that the two projects will have some cross-polinization going forward (in fact, we already have).</div>
<div><br></div><div>Michael</div></div></div>