> How about this: > > (#(true)), is this not calling a function that has no arguments and > returns true? But it still gives same exception
This actually is trying to call 'true' as if it were a function, not a constant. The thing I think you're missing here is: when a symbol is butted up against an opening parenthesis, it is treated as a function call, with the remaining elements in the list as arguments (unless the list is quoted, in which case it is not evaluated and treated as just a list). #(true) says call 'true' as a function with no arguments. #(%) says call the argument passed to this anonymous function as a function, and if, for example you were mapping a vector of numbers to this anonymous function, then each number would be called as a function. As you've already seen, if you just want the original value returned from a function, you can call the 'identity' function with that something as an argument, as in #(identity %) or #(identity true), etc. -- 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