Hi,

Am 18.09.2011 um 04:58 schrieb Eamonn:

> I tried the following
> Var keyword = RT.var("clojure.core", "keyword");
> Var hashMap = RT.var("clojure.core", "hash-map");
> hashMap.invoke(keyword.invoke("a"), 1);
> 
> then I created the following function
> (defn foo[key paramMap](key paramMap))
> 
> Object result=foo.invoke(keyword.invoke("a"), hashMap);

You pass the hash-map function, not a map. Just as in clojure you have to 
capture the return value.

Object theMap = hashMap.invoke(keyword.invoke("a"), 1);
Object result = foo.invoke(keyword.invoke("a"), theMap);

You get caught be the keyword lookup, because keywords return nil on 
non-map/set objects. If you change your foo as follows, you will get 5.

(defn foo [k m] (k m 5))

> But I got null returned but when I do as you suggest
> Object result=foo.invoke(keyword.invoke("a"),
> hashMap.invoke(keyword.invoke("a"), 1));
> I get 1 returned

Here you pass the return value of the hash-map call directly. Hence it works.

Sincerely
Meikel

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