Why prefer code generation over template Haskell? Isn&#39;t them essentially the same thing, and template haskell is performed automatically. <br><br><div class="gmail_quote">On Thu, Aug 9, 2012 at 11:25 AM, Stephen Paul Weber <span dir="ltr">&lt;<a href="mailto:singpolyma@singpolyma.net" target="_blank">singpolyma@singpolyma.net</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 back!  I&#39;ve walked in the desert for a bit longer than last time I was on this list, and have a much better handle on Haskell base concepts, which is useful.<br>


<br>
So, I re-looked-at yesod-routes as it exists now, and Yesod.Routes.Dispatch is very nice for doing the sort of thing I want.  Doesn&#39;t even use any language extensions itself!  (Oh, almost, it uses bang patterns.  Or is that not an extension when used in a datatype?  Anyway...)<br>


<br>
Unfortunately, using Yesod.Routes.Dispatch by itself is a bit verbose.  Of course, yesod-routes has all kinds of nice utilities to help with that, but they are very TH-heavy, so I set out to build a different way: code generation!<br>


<br>
The result is: &lt;<a href="http://hackage.haskell.org/package/route-generator" target="_blank">http://hackage.haskell.org/<u></u>package/route-generator</a>&gt; which takes in a simple text file format (attoparsec FTW!) and outputs a module that can be compiled into any application using yesod-routes and provide a list of routes based on the text file.  The types of the captured URI segments are inferred from the types of the actual Haskell code that handles the route.<br>


<br>
The generator assumes a single module that it will import exports names for all of the handlers, but I don&#39;t think this is too bad since you can always have a module that just re-exports all the handlers from wherever you define them.<br>


<br>
A simple example is in the git repository.<br>
<br>
I have also pushed up &lt;<a href="http://hackage.haskell.org/package/wai-dispatch" target="_blank">http://hackage.haskell.org/<u></u>package/wai-dispatch</a>&gt;, which is a simple wrapper around Yesod.Routes.Dispatch for use in WAI apps to convert a &quot;default&quot; (likely 404 or static file serving) Application, and a list of Route for yesod-route, into an Application that does the routing.  It&#39;s very little code, but I immidiately identified it as code that would end up appearing in every single one of my web apps, so I abstracted it out into a tiny library.<span class="HOEnZb"><font color="#888888"><br>


<br>
-- <br>
Stephen Paul Weber, @singpolyma<br>
See &lt;<a href="http://singpolyma.net" target="_blank">http://singpolyma.net</a>&gt; for how I prefer to be contacted<br>
edition right joseph<br>
</font></span><br>_______________________________________________<br>
web-devel mailing list<br>
<a href="mailto:web-devel@haskell.org">web-devel@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/web-devel" target="_blank">http://www.haskell.org/mailman/listinfo/web-devel</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><a href="http://yi-programmer.com/" target="_blank">http://yi-programmer.com/</a><br>