Some library functions are very amenable to currying; reduce, filter
and map all come to mind.

Here's a patch that implements partial application for reduce, for instance:

Index: src/clj/clojure/boot.clj
===================================================================
--- src/clj/clojure/boot.clj    (revision 1064)
+++ src/clj/clojure/boot.clj    (working copy)
@@ -503,7 +503,10 @@
   is returned and f is not called.  If val is supplied, returns the
   result of applying f to val and the first item in coll, then
   applying f to that result and the 2nd item, etc. If coll contains no
-  items, returns val and f is not called."
+  items, returns val and f is not called. If only f is supplied, then
+  a partial application of reduce curried with f is returned."
+  ([f]
+   (fn [& args] (apply reduce f args)))
   ([f coll]
    (let [s (seq coll)]
      (if s

This allows for some, in my opinion, very clean code. The simplest
example would be how this allows us to define a sum function:

(def sum (reduce +))

What do you guys think?

-- 
Venlig hilsen / Kind regards,
Christian Vest Hansen.

--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to