<?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: The Need for More Lack of Understanding</title>
	<atom:link href="http://clj-me.cgrand.net/2009/05/17/the-need-for-more-lack-of-understanding/feed/" rel="self" type="application/rss+xml" />
	<link>http://clj-me.cgrand.net/2009/05/17/the-need-for-more-lack-of-understanding/</link>
	<description>When the pupil is ready to learn, a teacher will appear.</description>
	<lastBuildDate>Tue, 07 Sep 2010 05:36:26 +0200</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: mb</title>
		<link>http://clj-me.cgrand.net/2009/05/17/the-need-for-more-lack-of-understanding/comment-page-1/#comment-35</link>
		<dc:creator>mb</dc:creator>
		<pubDate>Sun, 17 May 2009 14:57:00 +0000</pubDate>
		<guid isPermaLink="false">http://clj-me.cgrand.net/2009/05/17/the-need-for-more-lack-of-understanding/#comment-35</guid>
		<description>I&#039;m also not a big fan of code walking. In general it bears a lot of (subtle) problems. And I would feel much more comfortable if something like quasiquote was in core complementing quote and syntax-quote. But Rich is not very keen on including quasiquote...&lt;br /&gt;&lt;br /&gt;I saw a lot of its usage in scsh, eg. the shell and regex DSLs. And it worked there quite nicely. But Scheme brings it as a language construct. That is much more robust than a handcrafted hack. :]</description>
		<content:encoded><![CDATA[<p>I&#8217;m also not a big fan of code walking. In general it bears a lot of (subtle) problems. And I would feel much more comfortable if something like quasiquote was in core complementing quote and syntax-quote. But Rich is not very keen on including quasiquote&#8230;</p>
<p>I saw a lot of its usage in scsh, eg. the shell and regex DSLs. And it worked there quite nicely. But Scheme brings it as a language construct. That is much more robust than a handcrafted hack. :]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Christophe Grand</title>
		<link>http://clj-me.cgrand.net/2009/05/17/the-need-for-more-lack-of-understanding/comment-page-1/#comment-34</link>
		<dc:creator>Christophe Grand</dc:creator>
		<pubDate>Sun, 17 May 2009 11:08:00 +0000</pubDate>
		<guid isPermaLink="false">http://clj-me.cgrand.net/2009/05/17/the-need-for-more-lack-of-understanding/#comment-34</guid>
		<description>Hi Meikel,&lt;br /&gt;I have been bitten by code-walking (the previous Iteration of Enlive used unquote), I think I&#039;ll avoid it for some time (until Clojure compiler is rewritten in Clojure). But I agree &#039;unquote is maybe a better choice than &#039;do to denote user-code in my current approach.</description>
		<content:encoded><![CDATA[<p>Hi Meikel,<br />I have been bitten by code-walking (the previous Iteration of Enlive used unquote), I think I&#8217;ll avoid it for some time (until Clojure compiler is rewritten in Clojure). But I agree &#8216;unquote is maybe a better choice than &#8216;do to denote user-code in my current approach.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mb</title>
		<link>http://clj-me.cgrand.net/2009/05/17/the-need-for-more-lack-of-understanding/comment-page-1/#comment-33</link>
		<dc:creator>mb</dc:creator>
		<pubDate>Sun, 17 May 2009 09:50:00 +0000</pubDate>
		<guid isPermaLink="false">http://clj-me.cgrand.net/2009/05/17/the-need-for-more-lack-of-understanding/#comment-33</guid>
		<description>I use the following approach. It follows a bit Scheme quasiquote.&lt;br /&gt;The implementation is basically a modified syntax-quote from&lt;br /&gt;Clojure&#039;s compiler. The user can provide anything and verbatim&lt;br /&gt;code is simply prefix with ~. As in a normal macro.&lt;br /&gt;&lt;br /&gt;Eg:&lt;br /&gt;(let [x 5]&lt;br /&gt;  (quasiquote (+ ~x 6))&lt;br /&gt;&lt;br /&gt;will give&lt;br /&gt;&lt;br /&gt;(+ 5 6)&lt;br /&gt;&lt;br /&gt;Here is the implementation:&lt;br /&gt;&lt;br /&gt;(defn- unquote?&lt;br /&gt;  &quot;Tests whether the given form is of the form (unquote ...).&quot;&lt;br /&gt;  [form]&lt;br /&gt;  (and (seq? form) (= (first form) `unquote)))&lt;br /&gt; &lt;br /&gt;(defn- quasiquote*&lt;br /&gt;  &quot;Worker for quasiquote macro. See docstring there. For use in macros.&quot;&lt;br /&gt;  [form]&lt;br /&gt;  (cond&lt;br /&gt;    (self-eval? form) form&lt;br /&gt;    (unquote? form)   (second form)&lt;br /&gt;    (symbol? form)    (list &#039;quote form)&lt;br /&gt;    (vector? form)    (vec (map quasiquote* form))&lt;br /&gt;    (map? form)       (apply hash-map (map quasiquote* (flatten-map form)))&lt;br /&gt;    (set? form)       (apply hash-set (map quasiquote* form))&lt;br /&gt;    (seq? form)       (list* `list (map quasiquote* form))&lt;br /&gt;    :else             (list &#039;quote form)))&lt;br /&gt; &lt;br /&gt;(defmacro quasiquote&lt;br /&gt;  &quot;Quote the supplied form as quote does, but evaluate unquoted parts.&lt;br /&gt; &lt;br /&gt;  Example: (let [x 5] (quasiquote (+ ~x 6))) =&gt; (+ 5 6)&quot;&lt;br /&gt;  [form]&lt;br /&gt;  (quasiquote* form))</description>
		<content:encoded><![CDATA[<p>I use the following approach. It follows a bit Scheme quasiquote.<br />The implementation is basically a modified syntax-quote from<br />Clojure&#39;s compiler. The user can provide anything and verbatim<br />code is simply prefix with ~. As in a normal macro.</p>
<p>Eg:<br />(let [x 5]<br />  (quasiquote (+ ~x 6))</p>
<p>will give</p>
<p>(+ 5 6)</p>
<p>Here is the implementation:</p>
<p>(defn- unquote?<br />  &quot;Tests whether the given form is of the form (unquote &#8230;).&quot;<br />  [form]<br />  (and (seq? form) (= (first form) `unquote)))</p>
<p>(defn- quasiquote*<br />  &quot;Worker for quasiquote macro. See docstring there. For use in macros.&quot;<br />  [form]<br />  (cond<br />    (self-eval? form) form<br />    (unquote? form)   (second form)<br />    (symbol? form)    (list &#39;quote form)<br />    (vector? form)    (vec (map quasiquote* form))<br />    (map? form)       (apply hash-map (map quasiquote* (flatten-map form)))<br />    (set? form)       (apply hash-set (map quasiquote* form))<br />    (seq? form)       (list* `list (map quasiquote* form))<br />    :else             (list &#39;quote form)))</p>
<p>(defmacro quasiquote<br />  &quot;Quote the supplied form as quote does, but evaluate unquoted parts.</p>
<p>  Example: (let [x 5] (quasiquote (+ ~x 6))) =&gt; (+ 5 6)&quot;<br />  [form]<br />  (quasiquote* form))</p>
]]></content:encoded>
	</item>
</channel>
</rss>
