Languages with Macro capability
Wed Jan 2 12:41:02 2002
email@example.com (Software Scavenger) writes on comp.lang.lisp,
"Re: Macros in Elisp, Xlisp, Scheme, Dylan, etc.":
> Which other languages have this capability, of using the full power of
> the language in the implementation of each macro, and working with
> high level data such as lists and symbols instead of raw source code?
Popular languages with the ability to manipulate source-code
as high-level structure:
* ANSI Common LISP, maybe the first language with macro capability.
* OCAML can manipulate structured source code with camlp4.
* Erlang has such capability with parse_transform.
More obscure languages that have compile-time reflection include
* Most Scheme dialects include some kind of CL-like defmacro,
but no side-effect can be portably relied upon.
* Squeak, is an open implementation Smalltalk implementation:
* Maude notably builds its object system on such reflective capabilities.
* Pliant is built around the concept of an open compiler
* Upper/Mute is an open compiler framework:
* OpenC++ is C++ extended with compile-time reflection
* OpenJava is Java extended with compile-time reflection
* CRML is Compile-time Reflective ML
* FORTH is a pattern of low-level languages with compile-time reflection
(its dialect with most advanced macro capability may be macro4th/thisforth):
This list is certainly not authoritative. I'm sure there are plenty
of other systems with some kind of advanced compile-time reflection,
whereas some of the latter systems in the list might not allow as
full of a high-level reflection as you'd like. If you can send me
positive/negative feedback on how to amend this list,
it will be most welcome.
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ]
[ TUNES project for a Free Reflective Computing System | http://tunes.org ]
"I'm not a procrastinator, I'm temporally challenged"