I'm not sure if anyone's already done this, but I recently got tired of
writing code that looked like this:
(let [a 1]
(ns cljutils.core)
(defn- form-check
"Ensures the form represents an assignment.
Such as (:= a 1)"
[form]
(and
(= 3 (count form))
(= := (first form))
(symbol? (second form))))
(defn- iblk-fn
"Simulates imperative variable-assignments through nested
let statements."
[& forms]
(let [form (first forms)
rforms (rest forms)]
(if-not form
nil
;; Else
`(do
~@(if (form-check form)
`((let [~(second form) ~(nth form 2)]
~(apply iblk-fn rforms)))
(let [[f r] (split-with (comp not form-check) forms)]
(concat
f
(apply iblk-fn r))))))))
(defmacro -:>
[& forms]
(apply iblk-fn forms))
--
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