(defmacro my-let | |
[bindings & body] | |
(assert (-> bindings count even?) "Bindings count can only be even.") | |
`((fn [~@(take-nth 2 bindings)] | |
~@body) | |
~@(take-nth 2 (rest bindings)))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
One of the ways to implement let is to create a temporary function scope that will have required
bindings, and call this function with params that represent arguments.
For example, if you have bindings like
[a 1 b 2]
, you'll takea
andb
as variable names (bindings),and
1
and2
as values, that you'll call function with.This means that our let will expand:
To: