On Mon, Nov 7, 2011 at 4:27 AM, Dennis Haupt <d.haup...@googlemail.com>wrote:

> Am 07.11.2011 10:18, schrieb Dennis Haupt:
> >
> >>
> >>
> >> In his code I did notice he doesn't use destructing very much.
> >>
> >
> > where would that have been useful?
>
> defn x [{:keys [foo bar]} param]
>
> instead of
>
> defn x [param]
> (let [foo (:foo param)...])
>
> This

(defn advance-movement [game-element]
  (let [stats (:stats game-element)
        position-change (:movement stats)
        x-change (:x position-change)
        y-change (:y position-change)
        with-new-movement
        (update-in game-element [:stats :position ] #(translated % x-change
y-change))]
    with-new-movement))

can be this

(defn advance-movement [{{{:keys [x y]} :movement} :stats}]
  (update-in game-element [:stats :position ] translated x y))

or if you want the docstring to be short

(defn advance-movement [game-element]
  (let [{{{:keys [x y]} :movement} :stats} game-element]
   (update-in game-element [:stats :position ] translated x y)))

Note how you don't need the extra function #().

I've also noticed that you name your last result in a let and then return
it. I think it's more common to just return it and not name the final
thing.

Also sometimes you create a separate let under a let divided maybe only by
side effects, such as in split-up-asteroid. You could use one let and use _
bindings for side effects.

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