Skip to content

Instantly share code, notes, and snippets.

@scgilardi
Created November 16, 2011 16:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save scgilardi/1370491 to your computer and use it in GitHub Desktop.
Save scgilardi/1370491 to your computer and use it in GitHub Desktop.
a variant of let that provides access to all the bindings
; works in a simple test case, hasn't seen any other testing
(defmacro environment
"Expands to code that generates a map of locals: names to values"
[]
`(zipmap '~(keys &env) [~@(keys &env)]))
(defmacro visible-let [argv & body]
`(let [~@ argv
~'&bindings (environment)]
~@body))
user> (visible-let [a 1 b 2] &bindings)
{a 1, b 2}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment