Hi,
On Aug 31, 11:27 am, Timo Mihaljov <[email protected]> wrote:
> When defining a map literal, is it possible to reference the map that is
> being defined?
I don't think this is possible.
> I have some code that looks like this:
>
> (let [radius 20
> diameter (* 2 radius)
> circumference (* pi diameter)]
> {:radius radius
> :diameter diameter
> :circumference circumference})
>
> I would like to simplify it to something like:
>
> {:radius 20
> :diameter (* 2 (% :radius))
> :circumference (* pi (% :diameter))}
>
> where % is the map itself.
>
> Is this possible with the {}-syntax, or is there a macro to do this in
> the standard library or contrib?
Simply define a helper:
(defn make-circle
[radius]
{:radius radius
:diameter (* 2 radius)
:circumference (* 2 pi radius)})
If you are concerned about the double calculation of the diameter you
can use a let as you did. Or can have a look here:
http://github.com/francoisdevlin/devlinsf-clojure-utils/ and here the
discussion:
http://groups.google.com/group/clojure-dev/browse_thread/thread/4b20e40d83095c67.
Look for a function named trans*.
Hope this helps.
Sincerely
Meikel
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---