You should look at "->" it lest you take (op3 (op2 (op1 input))) and write it as (-> input op1 op2 op3) there is also "comp" which composes functions, and partial for partial application.
some example comp usage: http://github.com/hiredman/clojurebot/blob/297e266b0badf0f301a556e95771b940a80016e7/hiredman/clojurebot/tweet.clj#L11 On Wed, Feb 25, 2009 at 12:57 PM, levand <luke.vanderh...@gmail.com> wrote: > > Recently, in my code, I have been struggling with which of the two > equivalent forms is, in a general sense, "better". > > (defn my-fn1 [input] > (let [value1 (op1 input) > value2 (op2 input) > value3 (op4 value1 value2)] > (op5 value3))) > > (defn my-fn2 [input] > (op5 (op4 (op1 input) (op2 input)))) > > Now, the second is definitely cleaner and more elegant, besides being > smaller, which is a non-trivial benefit when I have a fair amount of > code to page through. > > However, if I've been away from the code awhile, it's much easier to > come back determine what the code is doing when its written the first > way, especially when it uses descriptive names. An operation that is > impenetrable when written in nested form can become quite simple when > each step is broken down and labeled. > > Clojure is my first Lisp - should I just stick with the second form > until I learn to "see through" the nested s-expressions? > > It's not that I'm trying to make my code more imperative - Although I > come from a Java background, I love functional programming, and it is > a delight to see how much I can do without side-effects. But I do miss > the self-documentation that well-named variables can provide. > > Any thoughts? Also, is there any performance degradation from the > first way, or can the compiler optimize it away? > > > -- And what is good, Phaedrus, And what is not good— Need we ask anyone to tell us these things? --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---