On Aug 30, 2009, at 3:24 AM, Dan Fichter wrote:

> I'd like to convince some Python developers that Clojure is not  
> foreign and does many things better than Python.  I'd appreciate  
> whatever suggestions you have about what I've written.
>
> Though I am crazy about STM and Clojure agents, I don't deal with  
> them here.  This has to be a gentle introduction rather than a  
> thorough survey of Clojure, so I've left out other language  
> features, too.

It's certainly a comprehensive survey of parallel impls of various  
patterns.  I've no idea how effective it'll be, not being a python  
programmer (any more!), but it's worth a shot.

One thing did trouble me, though:

> Define a capturer object that can do two things: capture something,  
> and return everything it's captured so far.
>
> [Clojure]
>
> (defn create-capturer []
>   (let [captured (atom #{})]
>     {:capture          (fn [x] (swap! captured conj x))
>      :get-all-captured (fn []  (deref captured))}))


I know you're trying to draw parallels, but I think this goes too far  
in trying to write python (or java) in clojure, especially given  
immutable data structures.  All you need are #{x} to create a  
'capturer', (conj c x) to add a new item to it, and c to get the set  
of things captured so far.  I know you know that, but presenting the  
above doesn't seem to do anyone any favors since it's absolutely not  
idiomatic.

Alternatively, if you feel like you must approach a direct corollary,  
this is a little better IMO (I cringe a little at poor-man's closure- 
methods :-):

(defn capture
   ([x] (atom #{x}))
   ([c x] (do
            (swap! c conj x)
            c)))

And of course, @c will get you the set of captured objects.

- Chas

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to