We're starting to use potemkin at Prismatic, and the part we've found most useful which Zach didn't mention in his post are the smart types. Especially definterface+, which is like a love child of defprotocol and definterface: - Same syntax as defprotocol, and defines functions in your namespace that wrap the interface functions (without extend-protocol support, obviously) - Allows for primitive arguments and return values (like clojure.core/definterface), which are propagated to the wrapper functions for maximal performance - Doesn't re-evaluate if the body has not changed, which can make repl development less painful (especially when used with its defrecord+ counterpart).
On Wednesday, June 19, 2013 12:12:41 PM UTC-7, Zach Tellman wrote: > > Potemkin [1] is a collection of facades and utilities that I've found > helpful when writing larger-scale libraries or applications. I've never > formally announced it before, but I think it's gotten to the point where > others can benefit from it. > > A few highlights: > > * 'def-map-type', which allows for the definition of custom map-like > objects with 10x less code > * 'unify-gensyms', which allows for more concise nested syntax-quotes > * 'import-vars', which allows for code sprinkled across multiple > namespaces to be exposed via a single namespace > > It's been pointed out before that ideally a library should have no > dependencies but Clojure itself, or we risk transitive dependency conflicts > when everyone uses different versions of a utility library. In deference > to this, Potemkin is licensed such that any piece of code can be simply > pasted into your library, as long as there's a comment describing the > origin. > > If anyone has questions, I'm happy to answer them. If anyone has moral or > aesthetic objections to 'import-vars', you're not alone, but please > remember you're under no obligation to use it. > > Zach > > [1] https://github.com/ztellman/potemkin > -- -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.