Skip to content

Commit

Permalink
replaced flatten with concat in regularize-bindings
Browse files Browse the repository at this point in the history
  • Loading branch information
Evan Gamble committed Dec 9, 2011
1 parent a0d0d24 commit 1d12751
Showing 1 changed file with 20 additions and 16 deletions.
36 changes: 20 additions & 16 deletions src/let_else.clj
Expand Up @@ -6,22 +6,26 @@
[bindings]
(let [pairs (partition 2 bindings)
pair-groups (partition-by (comp keyword? first) pairs)
pair-group-pairs (partition-all 2 pair-groups)]

(flatten
(map #(let [[name-pairs kwd-pairs] %]
(if (nil? kwd-pairs) %
(let [kwds (apply hash-map (flatten kwd-pairs))]
[name-pairs
(cond (= 2 (count kwds))
[:when (:when kwds) :else (:else kwds)]

(:when kwds)
[:when (:when kwds)]

:else
[:when (first (last name-pairs)) :else (:else kwds)])])))
pair-group-pairs))))
pair-group-pairs (partition-all 2 pair-groups)

regularize
#(let [[name-pairs kwd-pairs] %
flat-name-pairs (apply concat name-pairs)]
(if (nil? kwd-pairs) flat-name-pairs
(let [flat-kwd-pairs (apply concat kwd-pairs)
kwds (apply hash-map flat-kwd-pairs)]
(concat flat-name-pairs
(cond (= 2 (count kwds))
[:when (:when kwds) :else (:else kwds)]

(:when kwds)
[:when (:when kwds)]

:else
[:when (first (last name-pairs)) :else (:else kwds)])))))]

(apply concat
(map regularize pair-group-pairs))))

(defmacro let?-
[bindings & body]
Expand Down

0 comments on commit 1d12751

Please sign in to comment.