Metaprogrammering
Metaprogrammering er å skriva dataprogram som har evna til å handsama program som sine data. Det tyder at eit program kan utformast for å lesa, syna, analysera eller transformera andre program og til og med endra seg sjølv medan det køyrer.
Språket som eit metaprogram er skrive i vert kalla eit metaspråk. Språk for program som er manipulerte vert kalla objektspråk. Når eit programmeringsspråk sjølv har evna til å vera sitt eige metaspråk vert dette kalla refleksjon. Refleksjon er eit kraftig verktøy i programmeringsspråk som legg til rette for metaprogrammering. I eit språk der språket sjølv er ein førsteklasses datatype (som i Lisp, Prolog, SNOBOL) er òg veldig nyttig, dette er kjent som homoikonisitet. Generisk programmering nyttar seg av ein slags metaprogrammeringsfunksjonalitet i dei språka som har støtte for det.
Implementeringar
endreMakroar
endre- Scheme sine hygieniske makroar
- Template Haskell
- MakroML