
I'm back! I'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. 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'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...) 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! The result is: http://hackage.haskell.org/package/route-generator 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. The generator assumes a single module that it will import exports names for all of the handlers, but I don'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. A simple example is in the git repository. I have also pushed up http://hackage.haskell.org/package/wai-dispatch, which is a simple wrapper around Yesod.Routes.Dispatch for use in WAI apps to convert a "default" (likely 404 or static file serving) Application, and a list of Route for yesod-route, into an Application that does the routing. It'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. -- Stephen Paul Weber, @singpolyma See http://singpolyma.net for how I prefer to be contacted edition right joseph