unroll `partial`, copy & pasted from Clojure core.clj