One thing to note is that while it's true "keywords can be used as 
functions" they can only really do one thing, which is get values from 
maps. That is to say, the keyword-function :foo is equivalent to the 
function #(get % foo). The function :foo has no relationship with the 
function foo, if it is defined. I hope that makes sense!

So, to some approximation, only use keywords as functions as a shorthand 
for getting values from maps. As others have pointed out, although the 
keyword :require is in function position above, that code never actually 
gets executed - it's just data for the ns macro. This can be one of the 
more confusing things to get straight ...


Jony


On Thursday, 3 July 2014 18:11:35 UTC+1, g vim wrote:
>
> I'm reading "Cloujure in Action" as an introduction to Clojure and, 
> although, I understand a keyword can be used as a function I don't 
> understand the difference between: 
>
> (ns org.currylogic.damages.http.expenses 
>             (:require [clojure.data.json :as json-lib] 
>                            [clojure.xml :as xml-core])) 
>
> ... and 
>
> (ns org.currylogic.damages.http.expenses 
>             (require [clojure.data.json :as json-lib] 
>                           [clojure.xml :as xml-core])) 
>
>
> When is it idiomatic or even preferable to substitute a function with a 
> keyword equivalent? 
>
>
> gvim 
>

-- 
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/d/optout.

Reply via email to