On Fri, Apr 16, 2010 at 2:29 PM, Bytesource <stefan.rohlf...@gmail.com> wrote:
> Hi,
>
> I am currently reading "Programming Clojure" but got stuck at the
> destructuring done in the "head-overlaps-body?" function call that is
> part of the "snake" game:
>
> (defn head-overlaps-body? [{[head & body] :body}]
>  (includes? body head))
>
> ;; page 200 of the pdf version
>
> I can not figure out what {[head & body] :body} actually means here.
The :body on the map returns something like this:

[[1 1] [1 2] [1 3] [1 4] [1 5]]

i.e. each co-ordinate is a vector and the whole set of vectors are
inside another vector. By the destructuring binding {[head & body]
:body}, you are separating out the head and the rest of the body.

(def snake-body {:body [[1 1] [1 2] [1 3]]})

(:body snake-body)

=> [[1 1] [1 2] [1 3]]

(let [[head & body] (:body snake-body)]
        head)
=> [1 1]

(let [[head & body] (:body snake-body)]
        body)
=> ([1 2] [1 3])

Hope this helps.

-- 
  Ramakrishnan

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