<?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: Initial Thoughts on Clojure</title>
	<atom:link href="http://nflath.com/2009/07/initial-thoughts-on-clojure/feed/" rel="self" type="application/rss+xml" />
	<link>http://nflath.com/2009/07/initial-thoughts-on-clojure/</link>
	<description>Technology-related ideas, mainly involving Emacs</description>
	<pubDate>Sat, 19 May 2012 08:48:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: ndanger.organism :: blog :: Polyglotism: not over your head, just overhead</title>
		<link>http://nflath.com/2009/07/initial-thoughts-on-clojure/comment-page-1/#comment-185</link>
		<dc:creator>ndanger.organism :: blog :: Polyglotism: not over your head, just overhead</dc:creator>
		<pubDate>Fri, 07 Aug 2009 20:06:10 +0000</pubDate>
		<guid isPermaLink="false">http://nflath.com/?p=181#comment-185</guid>
		<description>[...] Finally there&#8217;s the cost of tools &amp; debugging. You now need tooling&#8211;compilers, debuggers, syntax-aware editors&#8211;for several languages. More languages can lead to more complexity. Making matters worse, error messages across language boundaries are often cryptic, even when both languages are on the JVM. [...]</description>
		<content:encoded><![CDATA[<p>[...] Finally there&#8217;s the cost of tools &amp; debugging. You now need tooling&#8211;compilers, debuggers, syntax-aware editors&#8211;for several languages. More languages can lead to more complexity. Making matters worse, error messages across language boundaries are often cryptic, even when both languages are on the JVM. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Glen Stampoultzis</title>
		<link>http://nflath.com/2009/07/initial-thoughts-on-clojure/comment-page-1/#comment-107</link>
		<dc:creator>Glen Stampoultzis</dc:creator>
		<pubDate>Tue, 21 Jul 2009 06:14:06 +0000</pubDate>
		<guid isPermaLink="false">http://nflath.com/?p=181#comment-107</guid>
		<description>Regarding stack traces it's probably also worth looking at this:

http://github.com/mmcgrana/clj-stacktrace/tree/master</description>
		<content:encoded><![CDATA[<p>Regarding stack traces it&#8217;s probably also worth looking at this:</p>
<p><a href="http://github.com/mmcgrana/clj-stacktrace/tree/master" rel="nofollow">http://github.com/mmcgrana/clj-stacktrace/tree/master</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Basu</title>
		<link>http://nflath.com/2009/07/initial-thoughts-on-clojure/comment-page-1/#comment-106</link>
		<dc:creator>Basu</dc:creator>
		<pubDate>Tue, 21 Jul 2009 02:40:38 +0000</pubDate>
		<guid isPermaLink="false">http://nflath.com/?p=181#comment-106</guid>
		<description>It's interesting to know your experiences in Clojure. I've had some experience with Scheme (first half of SICP mostly) and now i'm looking into Common Lisp do some real-world stuff. I'm thinking of looking into writing some server software working with client JavaScript. I haven't looked at Clojure yet, but for now my favorite VM language is Scala (as long as static typing doesnt get in my way)</description>
		<content:encoded><![CDATA[<p>It&#8217;s interesting to know your experiences in Clojure. I&#8217;ve had some experience with Scheme (first half of SICP mostly) and now i&#8217;m looking into Common Lisp do some real-world stuff. I&#8217;m thinking of looking into writing some server software working with client JavaScript. I haven&#8217;t looked at Clojure yet, but for now my favorite VM language is Scala (as long as static typing doesnt get in my way)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Phil</title>
		<link>http://nflath.com/2009/07/initial-thoughts-on-clojure/comment-page-1/#comment-105</link>
		<dc:creator>Phil</dc:creator>
		<pubDate>Mon, 20 Jul 2009 22:56:32 +0000</pubDate>
		<guid isPermaLink="false">http://nflath.com/?p=181#comment-105</guid>
		<description>deong: Pressing "1" is no longer necessary in recent versions of swank-clojure.

In addition, I've just pushed out a fix that dims irrelevant lines from stack traces. This makes the important lines jump out at you much more quickly. Try it out if you're already using swank-clojure.</description>
		<content:encoded><![CDATA[<p>deong: Pressing &#8220;1&#8243; is no longer necessary in recent versions of swank-clojure.</p>
<p>In addition, I&#8217;ve just pushed out a fix that dims irrelevant lines from stack traces. This makes the important lines jump out at you much more quickly. Try it out if you&#8217;re already using swank-clojure.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: admin</title>
		<link>http://nflath.com/2009/07/initial-thoughts-on-clojure/comment-page-1/#comment-102</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Mon, 20 Jul 2009 19:14:16 +0000</pubDate>
		<guid isPermaLink="false">http://nflath.com/?p=181#comment-102</guid>
		<description>Thanks for the catches!  I'm updating the post to have the correct syntax in the cases I made mistakes.</description>
		<content:encoded><![CDATA[<p>Thanks for the catches!  I&#8217;m updating the post to have the correct syntax in the cases I made mistakes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian</title>
		<link>http://nflath.com/2009/07/initial-thoughts-on-clojure/comment-page-1/#comment-101</link>
		<dc:creator>Brian</dc:creator>
		<pubDate>Mon, 20 Jul 2009 19:13:11 +0000</pubDate>
		<guid isPermaLink="false">http://nflath.com/?p=181#comment-101</guid>
		<description>Note that  `for` isn't a loop, it's a list comprehension.  `doseq` is a loop.  Probably doesn't have anything to do with your error messages but a lot of people use `for` when they want `doseq`.

I think that the (.method obj) form is used more often by most people than (. obj method), because (function obj) is more Lispy.</description>
		<content:encoded><![CDATA[<p>Note that  `for` isn&#8217;t a loop, it&#8217;s a list comprehension.  `doseq` is a loop.  Probably doesn&#8217;t have anything to do with your error messages but a lot of people use `for` when they want `doseq`.</p>
<p>I think that the (.method obj) form is used more often by most people than (. obj method), because (function obj) is more Lispy.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mb</title>
		<link>http://nflath.com/2009/07/initial-thoughts-on-clojure/comment-page-1/#comment-100</link>
		<dc:creator>mb</dc:creator>
		<pubDate>Mon, 20 Jul 2009 18:58:50 +0000</pubDate>
		<guid isPermaLink="false">http://nflath.com/?p=181#comment-100</guid>
		<description>This syntax is wrong:

(cond ((&gt; num 0) 1
       ( num 0) 1
  ( instead of .. since it also allows functions/macros, not only methods.

(-&gt; someObject .callMethod (call-normal-clojure function with more args) (.another method) ...)

Notable is also doto:

(doto some-object
  .callSomethingOnObject
  (.callOtherMethodOnObject with args)
  (works-also-with-functions on the object))

Another note: This does not make sense to me:

(defn make-rectangle
  ([width] {:width width :height width})
  ([width height] (make-rectangle width height)))

It should probably read:

(defn make-rectangle
  ([width] (make-rectangle width width))
  ([width height] {:width width :height height}))</description>
		<content:encoded><![CDATA[<p>This syntax is wrong:</p>
<p>(cond ((&gt; num 0) 1<br />
       ( num 0) 1<br />
  ( instead of .. since it also allows functions/macros, not only methods.</p>
<p>(-&gt; someObject .callMethod (call-normal-clojure function with more args) (.another method) &#8230;)</p>
<p>Notable is also doto:</p>
<p>(doto some-object<br />
  .callSomethingOnObject<br />
  (.callOtherMethodOnObject with args)<br />
  (works-also-with-functions on the object))</p>
<p>Another note: This does not make sense to me:</p>
<p>(defn make-rectangle<br />
  ([width] {:width width :height width})<br />
  ([width height] (make-rectangle width height)))</p>
<p>It should probably read:</p>
<p>(defn make-rectangle<br />
  ([width] (make-rectangle width width))<br />
  ([width height] {:width width :height height}))</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Luís</title>
		<link>http://nflath.com/2009/07/initial-thoughts-on-clojure/comment-page-1/#comment-99</link>
		<dc:creator>Luís</dc:creator>
		<pubDate>Mon, 20 Jul 2009 17:09:47 +0000</pubDate>
		<guid isPermaLink="false">http://nflath.com/?p=181#comment-99</guid>
		<description>Your COND example has an extra pair of parenthesis. It should read:

(cond
  ((&gt; num 0) 1)
  (( num 0) (do-this) 1)
  ((&lt; num 0) (do-that) 0))</description>
		<content:encoded><![CDATA[<p>Your COND example has an extra pair of parenthesis. It should read:</p>
<p>(cond<br />
  ((&gt; num 0) 1)<br />
  (( num 0) (do-this) 1)<br />
  ((&lt; num 0) (do-that) 0))</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: deong</title>
		<link>http://nflath.com/2009/07/initial-thoughts-on-clojure/comment-page-1/#comment-98</link>
		<dc:creator>deong</dc:creator>
		<pubDate>Mon, 20 Jul 2009 15:20:48 +0000</pubDate>
		<guid isPermaLink="false">http://nflath.com/?p=181#comment-98</guid>
		<description>It's unfortunate that you have to remember to do this, but the reason you don't see your code in the stack trace is that exceptions are nested, and you aren't seeing a high enough level of the tree. The simple solution is to press "1" at the stack trace you get in Slime. That doesn't mean it's not ugly, but it at least lets you work around a big part of the problem.

See http://w01fe.com/blog/2008/12/debugging-clojure-with-slime/ for more information.</description>
		<content:encoded><![CDATA[<p>It&#8217;s unfortunate that you have to remember to do this, but the reason you don&#8217;t see your code in the stack trace is that exceptions are nested, and you aren&#8217;t seeing a high enough level of the tree. The simple solution is to press &#8220;1&#8243; at the stack trace you get in Slime. That doesn&#8217;t mean it&#8217;s not ugly, but it at least lets you work around a big part of the problem.</p>
<p>See <a href="http://w01fe.com/blog/2008/12/debugging-clojure-with-slime/" rel="nofollow">http://w01fe.com/blog/2008/12/debugging-clojure-with-slime/</a> for more information.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

