It certainly helped :) I played around with it last night after chouser's response and it all made sense, thanks!
Cheers, Leonardo Borges www.leonardoborges.com On 15/09/2011, at 1:39 AM, Sean Corfield <seancorfi...@gmail.com> wrote: > On Wed, Sep 14, 2011 at 5:58 AM, Leonardo Borges > <leonardoborges...@gmail.com> wrote: >> (defn neighbors >> ([size yx] (neighbors [[-1 0] [1 0] [0 -1] [0 1]] size yx)) >> ([deltas size yx] >> (filter (fn [new-yx] >> (every? #(< -1 % size) new-yx)) >> (map #(map + yx %) deltas)))) >> >> This syntax made me scratch my head since I believe it was the first >> time I saw it. > > In case it wasn't clear from Chouser's response, the key difference is > that this declares two versions of neighbors, one that takes three > arguments and one that takes four - essentially overloading on arity. > Here's an example from some of our code at World Singles: > > (defn save-row > "Given a table name (string), a record and an optional > key-gen function, either insert it after applying the > key-gen function (if no pk) or update it. In both > cases, return the pk. The default key-gen function > is a no-op (identity). > When operating on a MongoDB collection, the logic is > much simpler because the pk is always :_id and key > generation is always handled by MongoDB. Also, we > always return the entire updated record (since we > can run functions against the database)." > ([table record] (save-row table record identity :id 0)) > ([table record key-gen] (save-row table record key-gen :id 0)) > ([table record key-gen pk] (save-row table record key-gen pk 0)) > ([table record key-gen pk retry] > ...)) > > Mostly we call this as (save-row :table-name {:some "record"}) but we > can also supply a key generation function (save-row :table-name {:some > "record"} add-uuid), for tables that don't have a generated PK column, > and we can specify the PK name if it isn't :id (save-row :table-row > {:some "record"} identity :email). > > Ignore retry - we need to refactor that into a private helper function > :) It's part of the machinery that let's automatically retry > operations on MongoDB if the replica set has no active primary node > since it can take a while to failover... > > Hope that helps? > -- > Sean A Corfield -- (904) 302-SEAN > An Architect's View -- http://corfield.org/ > World Singles, LLC. -- http://worldsingles.com/ > Railo Technologies, Inc. -- http://www.getrailo.com/ > > "Perfection is the enemy of the good." > -- Gustave Flaubert, French realist novelist (1821-1880) > > -- > 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 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