It is possible with macros:

  (defmacro next-number [] '(+ x 1))

Note that I'm using ' and not ` here, so the x isn't resolved. If I wanted
to use backticks, I'd need to write:

  (defmacro next-number [] `(+ ~'x 1))

Macros also get an implicit &env binding that gives them access to the
local environment.

  (defmacro locals [] (into {} (for [x (keys &env)] [`'~x x])))

- James


On 14 June 2014 01:16, Christopher Howard <cmhowa...@alaska.edu> wrote:

> This might be kind of perverse, but I was wondering if it was possible
> to write a function or macro that takes "hidden parameters", i.e.,
> uses symbols defined in the scope of use, without passing them in
> explicitly.
>
> For example, function "next-number" takes hidden parameter "x", so
>
> => (let [x 12] (next-number))
>
> Would return 13.
>
> With the whole "code is data" paradigm it seems like this should be
> possible, but I haven't figured out how to do this yet without getting
> an error.
>
> --
> 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.
>

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