<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Critiquing Clojure</title>
	<atom:link href="http://items.sjbach.com/567/critiquing-clojure/feed" rel="self" type="application/rss+xml" />
	<link>http://items.sjbach.com/567/critiquing-clojure</link>
	<description></description>
	<lastBuildDate>Mon, 12 Jul 2010 13:57:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Twitter Trackbacks for Critiquing Clojure – items.sjbach.com [sjbach.com] on Topsy.com</title>
		<link>http://items.sjbach.com/567/critiquing-clojure/comment-page-1#comment-3704</link>
		<dc:creator>Twitter Trackbacks for Critiquing Clojure – items.sjbach.com [sjbach.com] on Topsy.com</dc:creator>
		<pubDate>Mon, 31 Aug 2009 02:42:20 +0000</pubDate>
		<guid isPermaLink="false">http://items.sjbach.com/?p=567#comment-3704</guid>
		<description>[...] Critiquing Clojure – items.sjbach.com  items.sjbach.com/567/critiquing-clojure &#8211; view page &#8211; cached  #RSS 2.0 RSS .92 Atom 0.3 items.sjbach.com » Critiquing Clojure Comments Feed items.sjbach.com Some notes about Clojure Extensibility in Vim and &#8212; From the page [...]</description>
		<content:encoded><![CDATA[<p>[...] Critiquing Clojure – items.sjbach.com  items.sjbach.com/567/critiquing-clojure &ndash; view page &ndash; cached  #RSS 2.0 RSS .92 Atom 0.3 items.sjbach.com » Critiquing Clojure Comments Feed items.sjbach.com Some notes about Clojure Extensibility in Vim and &mdash; From the page [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stephen Bach</title>
		<link>http://items.sjbach.com/567/critiquing-clojure/comment-page-1#comment-3321</link>
		<dc:creator>Stephen Bach</dc:creator>
		<pubDate>Tue, 23 Jun 2009 19:15:44 +0000</pubDate>
		<guid isPermaLink="false">http://items.sjbach.com/?p=567#comment-3321</guid>
		<description>Meikel, thanks for the background.</description>
		<content:encoded><![CDATA[<p>Meikel, thanks for the background.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mb</title>
		<link>http://items.sjbach.com/567/critiquing-clojure/comment-page-1#comment-3320</link>
		<dc:creator>mb</dc:creator>
		<pubDate>Tue, 23 Jun 2009 07:39:05 +0000</pubDate>
		<guid isPermaLink="false">http://items.sjbach.com/?p=567#comment-3320</guid>
		<description>Here some more details on the declare discussion:

http://groups.google.com/group/clojure/browse_frm/thread/c3418875208d89e1/0f5b80483329c151?lnk=gst&amp;q=declare+rich+hickey#0f5b80483329c151

http://groups.google.com/group/clojure/browse_thread/thread/a99b420d5ee0aa40/0fb7f2d1936735d1?l#0fb7f2d1936735d1</description>
		<content:encoded><![CDATA[<p>Here some more details on the declare discussion:</p>
<p><a href="http://groups.google.com/group/clojure/browse_frm/thread/c3418875208d89e1/0f5b80483329c151?lnk=gst&amp;q=declare+rich+hickey#0f5b80483329c151" rel="nofollow">http://groups.google.com/group/clojure/browse_frm/thread/c3418875208d89e1/0f5b80483329c151?lnk=gst&amp;q=declare+rich+hickey#0f5b80483329c151</a></p>
<p><a href="http://groups.google.com/group/clojure/browse_thread/thread/a99b420d5ee0aa40/0fb7f2d1936735d1?l#0fb7f2d1936735d1" rel="nofollow">http://groups.google.com/group/clojure/browse_thread/thread/a99b420d5ee0aa40/0fb7f2d1936735d1?l#0fb7f2d1936735d1</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tmountain</title>
		<link>http://items.sjbach.com/567/critiquing-clojure/comment-page-1#comment-3317</link>
		<dc:creator>tmountain</dc:creator>
		<pubDate>Tue, 23 Jun 2009 01:29:07 +0000</pubDate>
		<guid isPermaLink="false">http://items.sjbach.com/?p=567#comment-3317</guid>
		<description>As someone who tried to learn CL a few times and never fully committed to it, I&#039;ve found Clojure extremely enjoyable. It has a certain simplicity that&#039;s hard to find elsewhere, and it readily excels in areas where Lisp is traditionally weak (Sockets, Portability, Databases, etc...).

I appreciate the commentary in this article as it&#039;s well put together and echoes my own feelings in certain circumstances. But, a few warts aside, I find very little to complain about with Clojure. It&#039;s actually gotten me back into coding in my free time which I haven&#039;t done in years.</description>
		<content:encoded><![CDATA[<p>As someone who tried to learn CL a few times and never fully committed to it, I&#8217;ve found Clojure extremely enjoyable. It has a certain simplicity that&#8217;s hard to find elsewhere, and it readily excels in areas where Lisp is traditionally weak (Sockets, Portability, Databases, etc&#8230;).</p>
<p>I appreciate the commentary in this article as it&#8217;s well put together and echoes my own feelings in certain circumstances. But, a few warts aside, I find very little to complain about with Clojure. It&#8217;s actually gotten me back into coding in my free time which I haven&#8217;t done in years.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stephen Bach</title>
		<link>http://items.sjbach.com/567/critiquing-clojure/comment-page-1#comment-3316</link>
		<dc:creator>Stephen Bach</dc:creator>
		<pubDate>Mon, 22 Jun 2009 23:16:44 +0000</pubDate>
		<guid isPermaLink="false">http://items.sjbach.com/?p=567#comment-3316</guid>
		<description>Tom, thanks for the well-reasoned reply.
    
&lt;blockquote&gt;                                                   
Check out this binding-map macro to see how you can do this in Clojure.  Uses some tricks that aren&#039;t exposed as part of the language definition, but presumably we&#039;ll see some of this open up as the language itself stabilizes.
&lt;/blockquote&gt;

Yep, looks like &lt;code&gt;binding-map&lt;/code&gt; is pretty much the equivalent of &lt;code&gt;PROGV&lt;/code&gt;.

&lt;blockquote&gt;
As far as , vs. ~ in backquote is concerned, I find ~ to be much more intuitive now that I&#039;m used to it. But that may be tom-a-toes vs. tom-ah-toes. :-)
&lt;/blockquote&gt;

Likely so. :-)

&lt;blockquote&gt;
I&#039;m sure it&#039;s not the right dish for everybody (and it is still a young language with all the &quot;best practices still being discovered&quot; that that implies), but for me and a bunch of other folks who&#039;ve been developing in it, it really hits the spot!
&lt;/blockquote&gt;

Considering its pace of development, it will be interesting to see how Clojure sits a year or two from now.  Maybe a couple things from this list will have changed (and maybe there will be a couple new things to add).  In any case, I&#039;m glad Clojure is around.</description>
		<content:encoded><![CDATA[<p>Tom, thanks for the well-reasoned reply.</p>
<blockquote><p>
Check out this binding-map macro to see how you can do this in Clojure.  Uses some tricks that aren&#8217;t exposed as part of the language definition, but presumably we&#8217;ll see some of this open up as the language itself stabilizes.
</p></blockquote>
<p>Yep, looks like <code>binding-map</code> is pretty much the equivalent of <code>PROGV</code>.</p>
<blockquote><p>
As far as , vs. ~ in backquote is concerned, I find ~ to be much more intuitive now that I&#8217;m used to it. But that may be tom-a-toes vs. tom-ah-toes. <img src='http://items.sjbach.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />
</p></blockquote>
<p>Likely so. <img src='http://items.sjbach.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<blockquote><p>
I&#8217;m sure it&#8217;s not the right dish for everybody (and it is still a young language with all the &#8220;best practices still being discovered&#8221; that that implies), but for me and a bunch of other folks who&#8217;ve been developing in it, it really hits the spot!
</p></blockquote>
<p>Considering its pace of development, it will be interesting to see how Clojure sits a year or two from now.  Maybe a couple things from this list will have changed (and maybe there will be a couple new things to add).  In any case, I&#8217;m glad Clojure is around.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Stephen Bach</title>
		<link>http://items.sjbach.com/567/critiquing-clojure/comment-page-1#comment-3315</link>
		<dc:creator>Stephen Bach</dc:creator>
		<pubDate>Mon, 22 Jun 2009 21:57:35 +0000</pubDate>
		<guid isPermaLink="false">http://items.sjbach.com/?p=567#comment-3315</guid>
		<description>Ram, looks good!  I like that it also covers default values.

Mark, much cleaner. :-)</description>
		<content:encoded><![CDATA[<p>Ram, looks good!  I like that it also covers default values.</p>
<p>Mark, much cleaner. <img src='http://items.sjbach.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tom Faulhaber</title>
		<link>http://items.sjbach.com/567/critiquing-clojure/comment-page-1#comment-3314</link>
		<dc:creator>Tom Faulhaber</dc:creator>
		<pubDate>Mon, 22 Jun 2009 21:52:27 +0000</pubDate>
		<guid isPermaLink="false">http://items.sjbach.com/?p=567#comment-3314</guid>
		<description>Stephen,

These are well thought out comments and things I&#039;ve thought about as well while I&#039;ve moved from CL to Clojure. Let me add some color from someone who has drunk a lot of the kool-aid:

1) Dynamic binding

Check out this &lt;a href=&quot;http://github.com/richhickey/clojure-contrib/blob/7ea70da82e42416864e2f97e3d314aced34af682/src/clojure/contrib/pprint/pprint_base.clj#L104&quot; rel=&quot;nofollow&quot;&gt;binding-map&lt;/a&gt; macro to see how you can do this in Clojure. Uses some tricks that aren&#039;t exposed as part of the language definition, but presumably we&#039;ll see some of this open up as the language itself stabilizes.

2) Pre-declaring vars

Yeah, I agree with this complaint. Rich has explained why Clojure does it (but I can&#039;t find a link right now), but it just *feels* wrong in a lisp-like language.

3) Keyword args

This is this way to support super-fast calling into Java-land (no translation required). It&#039;s pretty easy to wrap, but as you point out it would be nice to have wraps for all the ways you define things that take arguments. 

4) Commas are whitespace

I&#039;ve found that I&#039;m happy to be able to use commas for grouping (esp. in tables, as you point out). They&#039;re used at the discretion of the author and really don&#039;t take up very much space.

As far as , vs. ~ in backquote is concerned, I find ~ to be much more intuitive now that I&#039;m used to it. But that may be tom-a-toes vs. tom-ah-toes. :-)

5) Type specifications are ugly.

I completely agree. This happens because type specifications use the super-general metadata annotation syntax. Perhaps we&#039;ll get some cleaner syntax in a future revision.

As you point out, you don&#039;t need type specifications too often anyway and Rich has hinted in various talks that he&#039;s thinking of ways that you&#039;ll need them less in the future.

6) All the good names are taken

I also see this problem with the names. 

On the other hand, the switch to Lisp-1 has been a real breath of fresh air. As you say, this is an old debate, but Clojure is the first time in a very long time that I&#039;ve used a Lisp-1 and the idea that a function is just a regular value that a variable can have really cleans up both my mental model of what&#039;s happening and the syntactic expression of it.

7) Conclusion

I&#039;ve been *completely* taken with coding in Clojure. While there are things I miss from CL, the elegance and taste with which Rich has combined the mechanisms of modern programming continues to astound me.

I&#039;m sure it&#039;s not the right dish for everybody (and it is still a young language with all the &quot;best practices still being discovered&quot; that that implies), but for me and a bunch of other folks who&#039;ve been developing in it, it really hits the spot!</description>
		<content:encoded><![CDATA[<p>Stephen,</p>
<p>These are well thought out comments and things I&#8217;ve thought about as well while I&#8217;ve moved from CL to Clojure. Let me add some color from someone who has drunk a lot of the kool-aid:</p>
<p>1) Dynamic binding</p>
<p>Check out this <a href="http://github.com/richhickey/clojure-contrib/blob/7ea70da82e42416864e2f97e3d314aced34af682/src/clojure/contrib/pprint/pprint_base.clj#L104" rel="nofollow">binding-map</a> macro to see how you can do this in Clojure. Uses some tricks that aren&#8217;t exposed as part of the language definition, but presumably we&#8217;ll see some of this open up as the language itself stabilizes.</p>
<p>2) Pre-declaring vars</p>
<p>Yeah, I agree with this complaint. Rich has explained why Clojure does it (but I can&#8217;t find a link right now), but it just *feels* wrong in a lisp-like language.</p>
<p>3) Keyword args</p>
<p>This is this way to support super-fast calling into Java-land (no translation required). It&#8217;s pretty easy to wrap, but as you point out it would be nice to have wraps for all the ways you define things that take arguments. </p>
<p>4) Commas are whitespace</p>
<p>I&#8217;ve found that I&#8217;m happy to be able to use commas for grouping (esp. in tables, as you point out). They&#8217;re used at the discretion of the author and really don&#8217;t take up very much space.</p>
<p>As far as , vs. ~ in backquote is concerned, I find ~ to be much more intuitive now that I&#8217;m used to it. But that may be tom-a-toes vs. tom-ah-toes. <img src='http://items.sjbach.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>5) Type specifications are ugly.</p>
<p>I completely agree. This happens because type specifications use the super-general metadata annotation syntax. Perhaps we&#8217;ll get some cleaner syntax in a future revision.</p>
<p>As you point out, you don&#8217;t need type specifications too often anyway and Rich has hinted in various talks that he&#8217;s thinking of ways that you&#8217;ll need them less in the future.</p>
<p>6) All the good names are taken</p>
<p>I also see this problem with the names. </p>
<p>On the other hand, the switch to Lisp-1 has been a real breath of fresh air. As you say, this is an old debate, but Clojure is the first time in a very long time that I&#8217;ve used a Lisp-1 and the idea that a function is just a regular value that a variable can have really cleans up both my mental model of what&#8217;s happening and the syntactic expression of it.</p>
<p>7) Conclusion</p>
<p>I&#8217;ve been *completely* taken with coding in Clojure. While there are things I miss from CL, the elegance and taste with which Rich has combined the mechanisms of modern programming continues to astound me.</p>
<p>I&#8217;m sure it&#8217;s not the right dish for everybody (and it is still a young language with all the &#8220;best practices still being discovered&#8221; that that implies), but for me and a bunch of other folks who&#8217;ve been developing in it, it really hits the spot!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Volkmann</title>
		<link>http://items.sjbach.com/567/critiquing-clojure/comment-page-1#comment-3312</link>
		<dc:creator>Mark Volkmann</dc:creator>
		<pubDate>Mon, 22 Jun 2009 19:20:57 +0000</pubDate>
		<guid isPermaLink="false">http://items.sjbach.com/?p=567#comment-3312</guid>
		<description>For type specification, I think a good syntax would be to use the UML convention. For example, instead of:

&lt;pre lang=&quot;clojure&quot;&gt;
(let [#^Integer a 2
      #^Integer b 3]
  (list a b))
&lt;/pre&gt;

use:

&lt;pre lang=&quot;clojure&quot;&gt;
(let [a:Integer 2
      b:Integer 3]
  (list a b))
&lt;/pre&gt;</description>
		<content:encoded><![CDATA[<p>For type specification, I think a good syntax would be to use the UML convention. For example, instead of:</p>

<div class="wp_syntax"><div class="code"><pre class="clojure" style="font-family:monospace;"><span style="color: #005a89;">&#40;</span><span style="color: #007719;">let</span> <span style="color: #005a89;">&#91;</span>#^Integer a <span style="color: #cc66cc;">2</span>
      #^Integer b <span style="color: #cc66cc;">3</span><span style="color: #005a89;">&#93;</span>
  <span style="color: #005a89;">&#40;</span><span style="color: #007719;">list</span> a b<span style="color: #005a89;">&#41;</span><span style="color: #005a89;">&#41;</span></pre></div></div>

<p>use:</p>

<div class="wp_syntax"><div class="code"><pre class="clojure" style="font-family:monospace;"><span style="color: #005a89;">&#40;</span><span style="color: #007719;">let</span> <span style="color: #005a89;">&#91;</span>a:<span style="color: #007719;">Integer</span> <span style="color: #cc66cc;">2</span>
      b:<span style="color: #007719;">Integer</span> <span style="color: #cc66cc;">3</span><span style="color: #005a89;">&#93;</span>
  <span style="color: #005a89;">&#40;</span><span style="color: #007719;">list</span> a b<span style="color: #005a89;">&#41;</span><span style="color: #005a89;">&#41;</span></pre></div></div>

]]></content:encoded>
	</item>
	<item>
		<title>By: Stephen Bach</title>
		<link>http://items.sjbach.com/567/critiquing-clojure/comment-page-1#comment-3311</link>
		<dc:creator>Stephen Bach</dc:creator>
		<pubDate>Mon, 22 Jun 2009 18:38:40 +0000</pubDate>
		<guid isPermaLink="false">http://items.sjbach.com/?p=567#comment-3311</guid>
		<description>Chouser:

&lt;blockquote&gt;
Just a couple small corrections:
&lt;pre lang=&quot;clojure&quot;&gt;(let [a #^int 5] a) ;incorrect&lt;/pre&gt;
The &lt;code&gt;#^&lt;/code&gt; is used only for Java classnames, not primitives.  This is part of the difference compared to &lt;code&gt;(int 5)&lt;/code&gt;.
&lt;pre lang=&quot;clojure&quot;&gt;(let [a #^Integer x] a) ;hint that x will always return an instance of Integer&lt;/pre&gt;
&lt;/blockquote&gt;

Thanks!  This is something I did not know.  It&#039;s curious that there is no compiler warning.

&lt;blockquote&gt;
Also, &lt;code&gt;(cons 2 3)&lt;/code&gt; doesn&#039;t make sense, since (seq 3) is an error.
&lt;/blockquote&gt;

Whoops!  Some Common Lisp snuck in there.

&lt;blockquote&gt;
Finally, I&#039;m not quite sure if I understand the details of &lt;code&gt;PROGV&lt;/code&gt;.  Have you looked at Clojure&#039;s &lt;code&gt;Var/pushThreadBindings&lt;/code&gt;?  It&#039;s what the &lt;code&gt;binding&lt;/code&gt; macro uses, and may be sufficient to allow a macro to implement what you want.
&lt;/blockquote&gt;

I have not -- an external commenter noted a similar thing, and referred to &lt;a href=&quot;http://paste.lisp.org/display/73551&quot; rel=&quot;nofollow&quot;&gt;this code&lt;/a&gt;.  Likely &lt;code&gt;Var/pushThreadBindings&lt;/code&gt; is exactly the piece that&#039;s needed to support &lt;code&gt;PROGV&lt;/code&gt;.</description>
		<content:encoded><![CDATA[<p>Chouser:</p>
<blockquote><p>
Just a couple small corrections:</p>

<div class="wp_syntax"><div class="code"><pre class="clojure" style="font-family:monospace;"><span style="color: #005a89;">&#40;</span><span style="color: #007719;">let</span> <span style="color: #005a89;">&#91;</span>a <span style="color: #000099;">#^int</span> <span style="color: #cc66cc;">5</span><span style="color: #005a89;">&#93;</span> a<span style="color: #005a89;">&#41;</span> <span style="color: #808080; font-style: italic;">;incorrect</span></pre></div></div>

<p>The <code>#^</code> is used only for Java classnames, not primitives.  This is part of the difference compared to <code>(int 5)</code>.</p>

<div class="wp_syntax"><div class="code"><pre class="clojure" style="font-family:monospace;"><span style="color: #005a89;">&#40;</span><span style="color: #007719;">let</span> <span style="color: #005a89;">&#91;</span>a #^Integer x<span style="color: #005a89;">&#93;</span> a<span style="color: #005a89;">&#41;</span> <span style="color: #808080; font-style: italic;">;hint that x will always return an instance of Integer</span></pre></div></div>

</blockquote>
<p>Thanks!  This is something I did not know.  It&#8217;s curious that there is no compiler warning.</p>
<blockquote><p>
Also, <code>(cons 2 3)</code> doesn&#8217;t make sense, since (seq 3) is an error.
</p></blockquote>
<p>Whoops!  Some Common Lisp snuck in there.</p>
<blockquote><p>
Finally, I&#8217;m not quite sure if I understand the details of <code>PROGV</code>.  Have you looked at Clojure&#8217;s <code>Var/pushThreadBindings</code>?  It&#8217;s what the <code>binding</code> macro uses, and may be sufficient to allow a macro to implement what you want.
</p></blockquote>
<p>I have not &#8212; an external commenter noted a similar thing, and referred to <a href="http://paste.lisp.org/display/73551" rel="nofollow">this code</a>.  Likely <code>Var/pushThreadBindings</code> is exactly the piece that&#8217;s needed to support <code>PROGV</code>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Rockway</title>
		<link>http://items.sjbach.com/567/critiquing-clojure/comment-page-1#comment-3310</link>
		<dc:creator>Jonathan Rockway</dc:creator>
		<pubDate>Mon, 22 Jun 2009 18:35:10 +0000</pubDate>
		<guid isPermaLink="false">http://items.sjbach.com/?p=567#comment-3310</guid>
		<description>Chouser, &lt;pre lang=&quot;commonlisp&quot;&gt;(cons 2 3)&lt;/pre&gt; makes sense to CL programmers, as cons cells are pairs, not necessarily lists.  (Sure, lists are cons cells of cons cells or NIL... but that is not the only structure you can build with them.)

It&#039;s common to use non-list cons cells as association lists: &lt;pre lang=&quot;commonlisp&quot;&gt;&#039;((foo . bar)(bar . baz)(baz (quux gorch))&lt;/pre&gt;.  The advantage that &lt;pre lang=&quot;commonlisp&quot;&gt;(cdr (assoc ...))&lt;/pre&gt; always gives you the data.

Dunno how this works in Clojure, but it would sure be weird to not have cons cells that can hold arbitrary objects in both the car and the cdr.</description>
		<content:encoded><![CDATA[<p>Chouser,</p>

<div class="wp_syntax"><div class="code"><pre class="commonlisp" style="font-family:monospace;"><span style="color: #005a89;">&#40;</span><span style="color: #007719;">cons</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #005a89;">&#41;</span></pre></div></div>

<p> makes sense to CL programmers, as cons cells are pairs, not necessarily lists.  (Sure, lists are cons cells of cons cells or NIL&#8230; but that is not the only structure you can build with them.)</p>
<p>It&#8217;s common to use non-list cons cells as association lists:</p>

<div class="wp_syntax"><div class="code"><pre class="commonlisp" style="font-family:monospace;">'<span style="color: #005a89;">&#40;</span><span style="color: #005a89;">&#40;</span>foo . bar<span style="color: #005a89;">&#41;</span><span style="color: #005a89;">&#40;</span>bar . baz<span style="color: #005a89;">&#41;</span><span style="color: #005a89;">&#40;</span>baz <span style="color: #005a89;">&#40;</span>quux gorch<span style="color: #005a89;">&#41;</span><span style="color: #005a89;">&#41;</span></pre></div></div>

<p>.  The advantage that</p>

<div class="wp_syntax"><div class="code"><pre class="commonlisp" style="font-family:monospace;"><span style="color: #005a89;">&#40;</span><span style="color: #007719;">cdr</span> <span style="color: #005a89;">&#40;</span><span style="color: #007719;">assoc</span> ...<span style="color: #005a89;">&#41;</span><span style="color: #005a89;">&#41;</span></pre></div></div>

<p> always gives you the data.</p>
<p>Dunno how this works in Clojure, but it would sure be weird to not have cons cells that can hold arbitrary objects in both the car and the cdr.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced) (user agent is rejected)
Database Caching 4/16 queries in 0.090 seconds using disk

Served from: items.sjbach.com @ 2010-07-29 13:50:50 -->