It can still be done with the #(), with for example the hash-map function.
It's basically the same as the {} but as a function, like this:
(hash-map :a 3 :b 4)
=> {:a 3, :b 4}

So you should be able to write the function as:
#(hash-map :foo_id foo-id (keyword a-keyword) (:BAR_KEY %))

I think you should use the standard (fn []) syntax though, since it's
shorter.

> Hyphens is my preferred way as well, but, those keys represent sql
columns which they use underscore so I gotta go with underscores in order
code to match them :)
I see. :)

Jonathan


On Thu, Mar 28, 2013 at 10:51 PM, Ryan <arekand...@gmail.com> wrote:

> Thanks for your explanation Jonathan. I am still a bit confused however
> what is the proper solution here. Should i use an anonymous function
> instead to do what I want or can it be done with the #() syntax?
>
> Hyphens is my preferred way as well, but, those keys represent sql columns
> which they use underscore so I gotta go with underscores in order code to
> match them :)
>
> Ryan
>
> On Thursday, March 28, 2013 11:24:38 PM UTC+2, Jonathan Fischer Friberg
> wrote:
>
>> It's because the #() syntax always calls the content as a function.
>>
>> So #(...) is the same as (fn [] (...)). In your case,
>> #({:foo_id foo-id (keyword a-keyword) (:BAR_KEY %)})
>> is the same as:
>> (fn [%] ({:foo_id foo-id (keyword a-keyword) (:BAR_KEY %)}))
>> Note the extra () around {}. In other words, your map is called
>> as a function.
>>
>> Maps can normally be called as functions, like this:
>> ({:hello :world} :hello)
>> => :world
>> That's why you get the "Wrong number of args" error
>> (and not a "a map is not a function" error).
>> Hope that makes sense.
>>
>> Btw, hyphen is normally used instead of underscore
>> in both variables and keywords. Just a slight style
>> "issue", but maybe you had your reasons. :)
>>
>> Jonathan
>>
>>
>> On Thu, Mar 28, 2013 at 10:16 PM, Ryan <areka...@gmail.com> wrote:
>>
>>> Hello!
>>>
>>> I am having a small issue with a hash-map initialization and I am
>>> failing to understand why. I have the following situation:
>>>
>>> (def a-list '({:BAR_KEY bar-value}, {:BAR_KEY another-value}))
>>>
>>>
>>> (defn my-function [foo-id a-keyword a-list]
>>>
>>>   (map #({:foo_id foo-id (keyword a-keyword) (:BAR_KEY %)}) a-list))
>>>>
>>>
>>> So, by running the above function like this:
>>>
>>> (my-function 5 "my_keyword" a-list)
>>>
>>>
>>> I get the following error:
>>>
>>> *clojure.lang.ArityException: Wrong number of args (0) passed to:
>>>> PersistentArrayMap*
>>>
>>>
>>> I am trying to get the following result:
>>>
>>> ({:foo_id 5 :my_keyword bar-value}, {:foo_id 5 :my_keyword
>>> another-value})
>>>
>>> Any ideas? I have played around in repl for the last 2 hrs but I haven't
>>> found the proper way to do this.
>>>
>>> Thank you for your time :)
>>>
>>>  --
>>> --
>>> 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 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.


Reply via email to