Hello Victor,<div><br></div><div>The current version of urlt already has template haskell code for automatically generating the url from the data type. There is an example of that in WaiExample.hs.</div><div><br></div><div>
I find that the TH is great when developing the application, because it &#39;just works&#39;. But when the app gets closer to release, I sometimes want to customize the way the urls look. (for seo, etc). The nice part is that I can just write some custom instances of PathInfo instead of deriving them, and all of the other code just works.</div>
<div><br></div><div>Is there something more that you wanted the TH code to do?</div><div><br></div><div>- jeremy<br><br><div class="gmail_quote">On Thu, Mar 25, 2010 at 12:11 PM, Victor Nazarov <span dir="ltr">&lt;<a href="mailto:asviraspossible@gmail.com">asviraspossible@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;"><div><div></div><div class="h5">On Thu, Mar 25, 2010 at 6:48 AM, Michael Snoyman &lt;<a href="mailto:michael@snoyman.com">michael@snoyman.com</a>&gt; wrote:<br>

&gt;<br>
&gt;<br>
&gt; On Wed, Mar 24, 2010 at 3:36 PM, Jeremy Shaw &lt;<a href="mailto:jeremy@n-heptane.com">jeremy@n-heptane.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; On Mon, Mar 22, 2010 at 9:41 PM, Michael Snoyman &lt;<a href="mailto:michael@snoyman.com">michael@snoyman.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; If I&#39;m not mistaken, I think that addresses all the issues on the table;<br>
&gt;&gt;&gt; is there anything left to decide? I look forward to seeing a sample URLT :).<br>
&gt;&gt;<br>
&gt;&gt; There were other issues that came up, but nothing exciting enough to talk<br>
&gt;&gt; about.<br>
&gt;&gt; I have pushed a patch which I think brings the code up to date in terms of<br>
&gt;&gt; functionality. See WaiExample for a detail of everything that is currently<br>
&gt;&gt; supported (aside from the happstack / hsp stuff).<br>
&gt;&gt; The next steps are to:<br>
&gt;&gt;  1. change the names of any functions or types that we do not currently<br>
&gt;&gt; like<br>
&gt;&gt;  2. add the haddock documentation<br>
&gt;&gt;  3. split the package into separate packages so that you don&#39;t have to<br>
&gt;&gt; pull in extra dependencies that you aren&#39;t going to use<br>
&gt;&gt;  4. turn the WaiExample into a literate tutorial / blog post<br>
&gt;&gt;  5. add a (simple) happstack example as well<br>
&gt;&gt; So take a look and let me know what you think. Especially in regards to<br>
&gt;&gt; #1.<br>
&gt;&gt; Then we can also look into how to extend the yesod mkResources stuff to<br>
&gt;&gt; work with this new code.<br>
&gt;&gt; from a parsing point of view, we almost don&#39;t have to do anything, we<br>
&gt;&gt; could just do:<br>
&gt;&gt;  [mkResource|  &quot;/foo/:int/:int&quot; = \i j -&gt; mySite (Foo i j) |]<br>
&gt;&gt; or whatever the syntax is. But that does not solve the issue of how to go<br>
&gt;&gt; from (Foo 1 2) back to /foo/1/2 and ensure that it is the inverse operation.<br>
&gt;&gt;<br>
&gt; I don&#39;t have time right now to look at the code, but I will soon (I&#39;m in the<br>
&gt; middle of traveling *again*). Regarding the mkResource issue, I think it&#39;s<br>
&gt; slightly more complicated, and what I was thinking of was a combination of<br>
&gt; TemplateHaskell and QuasiQuotes to address it:<br>
&gt; * The quasi-quoted content will follow mostly the same syntax, though<br>
&gt; allowing you to specify the name of the constructor you wish to assign to<br>
&gt; each resource pattern.<br>
&gt; * Since we now will need to have multiple top-level definitions being<br>
&gt; generated, quasi-quoting alone won&#39;t solve the issue. So I will have a<br>
&gt; quasi-quote function to convert the YAML syntax to a StringObject, and then<br>
&gt; a TH function to convert the StringObject to:<br>
&gt;   1) A datatype for the URL.<br>
&gt;   2) A pair to to/from functions.<br>
&gt;   3) A dispatch function.<br>
&gt; This is the point at which having WebPlug/HandleT becomes useful.<br>
&gt; If that was too vague, just let me know and I&#39;ll clarify ;).<br>
<br>
</div></div>Hello, everybody.<br>
<br>
I haven&#39;t been following the entire thread. But I think that typed<br>
URLs are great. When I started thinking about typed URLs, I thought<br>
about using only data type definition and dropping quosi-quotation<br>
entirely in favour of template haskell. I wanted to write some<br>
template haskell function to work on data-type declaration, it would<br>
use data-constructors names and arguments and build path components<br>
from their names. So we will need no new notation to describe<br>
application resources, we will never be conserned with URL generator<br>
and parser, we will work with our own, carefully defined data-type as<br>
it IS a URL.<br>
<br>
--<br>
<font color="#888888">Victor Nazarov<br>
</font></blockquote></div><br></div>