Metaprogramming
From Erlang Community
(Difference between revisions)
| Revision as of 15:31, 22 September 2006 (edit) Vladdu (Talk | contribs) m ← Previous diff |
Current revision (07:39, 23 September 2006) (edit) (undo) Vladdu (Talk | contribs) |
||
| (3 intermediate revisions not shown.) | |||
| Line 2: | Line 2: | ||
| Vlad | Vlad | ||
| - | == | + | ==Note== |
| - | + | For technical reasons, this article has moved here [http://erlide.sourceforge.net/merlin/metaprogramming.html]. It will be moved back here when it's completed. | |
| <p> | <p> | ||
| - | + | Feel free to add your comments here, though. | |
| </p> | </p> | ||
| - | <p> | ||
| - | '''This is very much a work in progress. Please don't delete anything, just add your comments.'''</p> | ||
| - | |||
| - | ==What is metaprogramming?== | ||
| - | |||
| - | I won't go into the gory details here, there are plenty of papers on the matter. What I do mean by MP here is the capability of writing programs that handle programs. | ||
| - | |||
| - | ==Current status== | ||
| - | |||
| - | <p> | ||
| - | Erlang has already support for MP. It is composed from two parts: | ||
| - | *the parse trees for Erlang code are regular Erlang terms | ||
| - | *through the ''parse_transform'' concept, one can manipulate a module's parse tree before it is compiled | ||
| - | </p><p> | ||
| - | This is enough for quite advanced applications, but has the disadvantage that it's quite unwieldy and thus few have ventured into that area. Ulf Wiger has written code to make development of parse transforms easier. Another issue is that one has to use Erlang syntax for all extensions, which might make them not so easy to read and use. | ||
| - | </p> | ||
| - | |||
| - | ==MP extensions== | ||
| - | |||
| - | <p> | ||
| - | There are several areas where MP would be useful. | ||
| - | *[[Embedding domain specific languages]] | ||
| - | </p> | ||
| - | |||
| - | ===Handling Erlang code=== | ||
| - | |||
| - | ===Macros=== | ||
| - | |||
| - | ==License== | ||
| - | |||
| - | The code associated with this HOWTO is available under a license to be defined. | ||
| - | == | + | ==Comments== |
| - | Don't blame me if this stuff blows in your face or if your cat starts barking like a dog! :-) | ||
| [[Category:Concepts]] | [[Category:Concepts]] | ||
Current revision
[edit] Author
Vlad
[edit] Note
For technical reasons, this article has moved here [1]. It will be moved back here when it's completed.
Feel free to add your comments here, though.

Digg It
Del.icio.us
Reddit
Facebook
Stumble Upon
Technorati

