Hi,

Create & use dotopdown (or doreverse, name it as you like):

user=> (defmacro dotopdown [& body] `(do ~@(reverse body)))
#'user/dotopdown
user=> (dotopdown (defn abstract [a] (helper a)) (defn helper [a] (str a)))
#'user/abstract
user=> (abstract 30)
"30"

;)


2011/2/9 jkrueger <jan.krue...@gmail.com>

> When writing a Clojure namespace very often I would like to sort my
> functions according to level of abstraction, starting with the most
> abstract functions, followed by helper functions to the more abstract
> functions, and so on. This way of organizing code is promoted as good
> style by the Clean Code guys. However, to do this in Clojure one would
> have to declare almost every function in the namespace before actually
> defining it, since namespaces are interpreted top-down. This strikes
> me as very ugly. Since other functional languages like Haskell manage
> to avoid this problem, I would like to suggest that Clojure should
> provide a way to support this organizational scheme in the future.
>
> --
> 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

-- 
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

Reply via email to