<div dir="ltr"><br><br><div class="gmail_quote">On Mon, May 24, 2010 at 7:47 PM, Chris Smith <span dir="ltr">&lt;<a href="mailto:cdsmith@gmail.com">cdsmith@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;">
Just one comment (in a few parts).<br>
<div class="im"><br>
On Mon, 2010-05-24 at 17:47 +0300, Michael Snoyman wrote:<br>
<br>
&gt; I would say that Yesod and Snap are very orthogonal projects. Without<br>
&gt; offense to the Snap authors, I don&#39;t really think Snap is a framework;<br>
&gt; it&#39;s much more low-level than that.<br>
<br>
</div>That seems to be overstating the case a bit.  Snap is designed to write<br>
applications directly on top of it, and in that sense acts as a<br>
framework.  Some of the difference you&#39;re seeing likely comes down to<br>
preference about how heavy the &quot;framework&quot; ought to be.<br>
<div class="im"><br>
&gt; * Yesod has type-safe URLs, I don&#39;t believe Snap has any similar<br>
&gt; feature. However, as I mentioned already, Snap is lower level than<br>
&gt; Yesod, so you could easily implement type-safe URLs on top of Snap.<br>
<br>
</div>Snap does provide a form of routing requests, and even of parsing data<br>
from the contents of the URL.  It looks to be based on combinators<br>
similar to what Happstack does, with the exception that capturing<br>
variables from URLs is done in a relatively braindead way by adding<br>
special syntax with colons inside strings.<br>
<br>
The point here is, Snap does something different; not necessarily<br>
something worse.  We all have our preferences.  Treating Snap as a new<br>
underlying server implementation on top of which to layer WAI and Yesod<br>
is possible, but rather missing the point.  Much of what I get from Snap<br>
is that we can dispense with some of the unnecessary complexity and just<br>
solve problems.<br>
<br>
Then again, I&#39;ve also built three or four significant internally used<br>
web applications with Happstack, and have yet to use happstack-state for<br>
anything but working through tutorials.  Could be I&#39;m just afraid of<br>
change...<br>
<br></blockquote><div>I think you read my e-mail a little too harshly. Let me rephrase:</div><div><br></div><div>* The feature set Snap has right now does not qualify it as a framework *in my mind*. If someone asks to compare the features of Snap and Yesod, there&#39;s not much to say. I&#39;m well aware of the subjectivity of the term framework, I&#39;m merely saying that by the criteria I know, and which I think most people are used to, Snap does not provide the features of a framework.</div>
<div><br></div><div>* I&#39;m well aware of Snap&#39;s routing abilities, but it still does not support type-safe URLs. You may not want type-safe URLs, that&#39;s fine. But I can&#39;t compare Yesod&#39;s implementation of them versus Snap&#39;s, simply because the latter is absent.</div>
<div><br></div><div>If you see Snap as a great way to write applications without complications, go for it, I think that&#39;s great. For people that want features that Yesod provides, I think it will be nice to have a fast server to run on top of.</div>
<div><br></div><div>Michael</div></div></div>