I think Alex is trying to say that a macro is almost never appropriate
when a first-class function would do...therefore, there is no good
reason for carrying the complexity of macros all over your code, given
that in your case they do nothing special (like postponed evaluation)
and can be replaced by functions.
Jim
On 21/02/13 17:11, Ryan wrote:
I got confused a bit with the reason that a macro would not be
appropriate for this case. Can you please explain again?
Ryan
On Thursday, February 21, 2013 7:05:11 PM UTC+2, Alex Baranosky wrote:
A function could be appropriate, but a macro not appropriate,
since everything you need here can be done with using macros.
On Feb 21, 2013 7:53 AM, "Ryan" <areka...@gmail.com <javascript:>>
wrote:
Thanks for your input Alex.
Do you think a macro would be appropriate if I use this more
than once in my code?
Ryan
On Thursday, February 21, 2013 5:41:49 PM UTC+2, Alex
Baranosky wrote:
I'd often just write it like this:
(defn create-map []
(merge {:foo "a"
:bar "b"
... many more keys}
(when (some-condition-true)
{:extra-key value)))
Alex
On Thu, Feb 21, 2013 at 7:27 AM, Ryan <areka...@gmail.com>
wrote:
Thanks Meikel for your reply.
It wasn't clear on my example, but I wish to use
*merge *inside my create-map function. Do you think I
should bind my hash-map to a let variable first and
then apply merge, or do you have another proposal?
What i mean is this:
(defn create-key-value [value]
(when (some-condition-true) {:extra-key value))
(defn create-map []
(let [my-map {:foo "a" :bar "b"}]
(merge my-map (create-key-value "some-value")))
Is the above "clojurish" or is there a better way? For
example if the my-map was a big hash-map, and not with
just two pairs, wouldn't it be ugly with the above
way? or..it's just fine and no better way is possible?
Ryan
On Thursday, February 21, 2013 5:02:21 PM UTC+2,
Meikel Brandmeyer (kotarak) wrote:
Hi,
merge works with nil. So (merge (create-map)
(create-key-value "some-value")) should work as
you intend with the functions as they are defined now.
Kind regards
Meikel
--
--
You received this message because you are subscribed
to the Google
Groups "Clojure" group.
To post to this group, send email to
clo...@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+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
<http://groups.google.com/group/clojure?hl=en>
---
You received this message because you are subscribed
to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving
emails from it, send an email to
clojure+u...@googlegroups.com.
For more options, visit
https://groups.google.com/groups/opt_out
<https://groups.google.com/groups/opt_out>.
--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
<javascript:>
Note that posts from new members are moderated - please be
patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com <javascript:>
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
<http://groups.google.com/group/clojure?hl=en>
---
You received this message because you are subscribed to the
Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from
it, send an email to clojure+u...@googlegroups.com <javascript:>.
For more options, visit
https://groups.google.com/groups/opt_out
<https://groups.google.com/groups/opt_out>.
--
--
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 unsubscribe from this group and stop receiving emails from it, send
an email to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
--
--
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 unsubscribe from this group and stop receiving emails from it, send an email
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.