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.


Reply via email to