user=> (defcurry add [a b c d e] (+ 1 2 3 4 5)) #'user/add user=> (add 1) #object[clojure.core$partial$fn__5857 0x2c708440 "clojure.core$partial$fn__5857@2c708440"] user=> (add 1 2 3 4) #object[clojure.core$partial$fn__5863 0xf4c0e4e "clojure.core$partial$fn__5863@f4c0e4e"] user=> ((add 1) 2 3 4 5) 15 user=> (((add 1) 2 3) 4 5) 15 user=> (use 'clojure.pprint) nil user=> (pprint (macroexpand '(defcurry add [a b c d e] (+ 1 2 3 4 5)))) (def add (clojure.core/fn ([a b c d e] (+ 1 2 3 4 5)) ([a] (clojure.core/partial add a)) ([a b] (clojure.core/partial add a b)) ([a b c] (clojure.core/partial add a b c)) ([a b c d] (clojure.core/partial add a b c d)))) nil