Don't dismiss unhygienic macros: they are way more advanced than the kind of text-to-text rewriting with naive lexing and parsing that is the common kind of "metaprogramming" in mainstream circles.
-
This Tweet is unavailable.
-
-
This Tweet is unavailable.
-
As a Common Lisper, most of metaprogramming was done with manually-hygienic macros, using gensym.
1 reply 0 retweets 0 likes -
Replying to @Ngnghm
Shouldn't they be called "semi-hygienic" (or "gensymi-higienic")? I don't think they can handle cases like (defmacro (m a b) (list a b)) (let ((list +)) (m 1 2)) properly.
1 reply 0 retweets 0 likes -
Replying to @PaniczGodek
In Common Lisp, this issue is usually solved by the two "list" symbols being in separate packages: you just don't rebind things from other packages, unless they are special (dynamically-bound) *variables* (with earmuffs).
1 reply 0 retweets 1 like
Also, CL has separate bindings for functions/macros vs variables, so (let ((list ...)) ...) will shadow the variable binding, not the function binding.
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.
Read my blog!