Skip to content

Instantly share code, notes, and snippets.

@rhaps0dy
Created February 24, 2015 23:03
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 rhaps0dy/7007b063c9977e8b668c to your computer and use it in GitHub Desktop.
Save rhaps0dy/7007b063c9977e8b668c to your computer and use it in GitHub Desktop.
(setv test
(let [[a 5]
[b 7]]
(print a b)))
(print (type test))
def _hy_anon_fn_1():
a = 5
b = 7
return print(a, b)
test = _hy_anon_fn_1()
print(type(test))
(defmacro/g! let! [bindings &rest body]
`(progn
~@(list-comp `(setv ~b ~v) [(, b v) bindings])
(setv ~g!ret (progn ~@body))
~@(list-comp `(del ~b) [(, b v) bindings])
~g!ret))
(setv test
(let! [[a 5]
[b 7]]
(print a b)))
(print (type test))
from hy.core.language import gensym
import hy
from hy import HyExpression, HySymbol
@hy.macros.macro('let!')
def _hy_anon_fn_2(bindings, *body):
def _hy_anon_fn_1():
g!ret = gensym(HySymbol('g!ret')[2:])
return HyExpression(((((([] + [HySymbol('progn')]) + list([HyExpression(((([] + [HySymbol('setv')]) + [b]) + [v])) for (b, v) in bindings])) + [HyExpression(((([] + [HySymbol('setv')]) + [g!ret]) + [HyExpression((([] + [HySymbol('progn')]) + list(body)))]))]) + list([HyExpression((([] + [HySymbol('del')]) + [b])) for (b, v) in bindings])) + [g!ret]))
return _hy_anon_fn_1()
a = 5
b = 7
:ret_1235 = print(a, b)
del a
del b
test = :ret_1235
print(type(test))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment