kutils ยป Let Over Lambda utilities

defmacro!(name args &rest body)
defmacro! provides automatic gensyms and once-only evaluation. Arguments that begin with g! will be automatically gensym'd, and arguments that begin with o! will only be evaluated once. Inside the body, the o! arguments should be called as their equivalent g! argument: o!x should be called in the body as g!x.