Actually, being a common-lisper I end up re-keying my clojure cond expressions every time. Either I end up putting the extra levels of parens or I forget to properly "even-count".
Emacs paren-bouncing makes it easy to syntax check a common lisp cond but fails badly with clojure cond. Emacs doesn't even need to know that it is parsing lisp since paren-bouncing is enabled even in fundamental-mode buffers. However, there has to be a special parser for clojure. I guess it just depends on what you are used to but in this case the syntactic change seems spurious to me. Tim Daly cageface wrote:
Picky syntax question: In common lisp cond requires more parenthesization than clojure: (cond ((evenp a) a) ;if a is even return a ((> a 7) (/ a 2)) ;else if a is bigger than 7 return a/2 ((< a 5) (- a 1)) ;else if a is smaller than 5 return a-1 (t 17)) vs clojure: (cond (even? a) a ;if a is even return a (> a 7) (/ a 2) ;else if a is bigger than 7 return a/2 (< a 5) (- a 1) ;else if a is smaller than 5 return a-1 t 17) Of course, fewer parentheses are usually better, but I'm finding cond in the second form a little harder to read with more complex clauses: (defn compare-row [a b] ;; compare null rows as > to advance cursor (cond (and (nil? a) (nil? b)) [0,0] (and (nil? a) (not= b nil)) [1, 0] (and (not= a nil) (nil? b)) [-1, 0] true (loop [col 0 a a b b] (let [cmp (compare-fields (first a) (first b))] (if (and (< col (count a)) (= cmp 0)) (recur (+ 1 col) (rest a) (rest b)) [cmp,col]))))) In this case it takes some visual parsing to see what the predicates and results are and if you break them up onto individual lines you have to count evens to figure out what the results are. The extra level of indentation in the CL case makes it a lot easier. The only easy solution I've considered for this is to add an extra blank line between each clause, but this looks weird. Any thoughts on this or other approaches?
-- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en