<div dir="ltr"><br><br><div class="gmail_quote">On Mon, Aug 9, 2010 at 9:56 PM, Gregory Collins <span dir="ltr">&lt;<a href="mailto:greg@gregorycollins.net">greg@gregorycollins.net</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">Jeremy Shaw &lt;<a href="mailto:jeremy@n-heptane.com">jeremy@n-heptane.com</a>&gt; writes:<br>
<br>
&gt; Nice!<br>
&gt;<br>
&gt; I have not had time to look at this in detail, and probably won&#39;t for a few<br>
&gt; more days. But I am certainly in favor of the concept.<br>
&gt;<br>
&gt; I recently wrote some code for one of my own projects to deal with creating<br>
&gt; query string key/value pairs. It will be interesting to see  how they overlap.<br>
&gt;<br>
&gt; - jeremy<br>
&gt;<br>
&gt; p.s. Also, the query string is not required to be key/value pairs. It can be<br>
&gt; any non-hierarchical data which, combined with the path info,  serves to<br>
&gt; identify a resource. It just happens the key/value pairs are  the single most<br>
&gt; common what of encoding the this data. If web-routes  is going to only support<br>
&gt; key/value pairs, that is fine. But we should  probably acknowledge that in the<br>
&gt; docs.<br>
<br>
</div>Should the type of the query string part should be &quot;[(String,[String])]&quot;<br>
instead of &quot;[(String, String)]&quot;? I guess it depends on whether you<br>
wanted &quot;/?foo=a&amp;foo=b&amp;foo=c&quot; to decode the query params as:<br>
<br>
    [(&quot;foo&quot;,&quot;a&quot;), (&quot;foo&quot;,&quot;b&quot;), (&quot;foo&quot;,&quot;c&quot;)]<br>
<br>
vs<br>
<br>
    [(&quot;foo&quot;, [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;])]<br>
<br>
The latter has the advantage that &quot;lookup&quot; returns all of the values at<br>
once. Would &quot;Map String [String]&quot; be better?<br>
<br></blockquote><div>I know that in practice we usually ignore the order of the keys, but in theory that information could be useful. Also, I think that the [(String, String)] is the most useful structure; if you want to get all the values, just use a &quot;filter (\x -&gt; snd x == key)&quot;, and then the usual case of looking up a single value is simple.</div>
<div><br></div><div>However, the most important issue is that the key/value pairs being constructed here aren&#39;t actually being looked up in; it will almost exclusively be used for constructing a URL, in which case this is the simplest approach programatically. We also need to append lists, and having the data type be [(String, [String])] would introduce a lot of overhead of ensuring keys aren&#39;t duplicated.</div>
<div><br></div><div>Michael</div></div></div>