On Jun 22, 2010, at 3:27 PM, cageface wrote:
> 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?
Try this:
(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])))))
I do this with multi-line lets and hash-map initializations too:
(let [
foo
(calculate-foo arg1)
bar
(calculate-bar arg2)
extra-long-name
(calculate-extra-long-name arg3)]
(do-stuff))
(hash-map
:foo
(calculate-foo arg1)
:bar
(calculate-bar arg2)
:extra-long-name
(calculate-extra-long-name arg3))
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en