hh.sePublications
Change search
CiteExportLink to record
Permanent link

Direct link
Cite
Citation style
  • apa
  • ieee
  • modern-language-association-8th-edition
  • vancouver
  • Other style
More styles
Language
  • de-DE
  • en-GB
  • en-US
  • fi-FI
  • nn-NO
  • nn-NB
  • sv-SE
  • Other locale
More languages
Output format
  • html
  • text
  • asciidoc
  • rtf
MetaML and multi-stage programming with explicit annotations
Dept. of Comp. Sci. and Engineering, Oregon Graduate Institute, P.O. Box 91000, Portland, OR 97291, United States.ORCID iD: 0000-0003-3160-9188
Dept. of Comp. Sci. and Engineering, Oregon Graduate Institute, P.O. Box 91000, Portland, OR 97291, United States.
2000 (English)In: Theoretical Computer Science, ISSN 0304-3975, E-ISSN 1879-2294, Vol. 248, no 1-2, p. 211-242Article in journal (Refereed) Published
Abstract [en]

We introduce MetaML, a practically motivated, statically typed multi-stage programming language. MetaML is a “real” language. We have built an implementation and used it to solve multi-stage problems. MetaML allows the programmer to construct, combine, and execute code fragments in a type-safe manner. Code fragments can contain free variables, but they obey the static-scoping principle. MetaML performs type-checking for all stages once and for all before the execution of the first stage. Certain anomalies with our first MetaML implementation led us to formalize an illustrative subset of the MetaML implementation. We present both a big-step semantics and type system for this subset, and prove the type system's soundness with respect to a big-step semantics. From a software engineering point of view, this means that generators written in the MetaML subset never generate unsafe programs. A type system and semantics for full MetaML is still ongoing work. We argue that multi-stage languages are useful as programming languages in their own right, that they supply a sound basis for high-level program generation technology, and that they should support features that make it possible for programmers to write staged computations without significantly changing their normal programming style. To illustrate this we provide a simple three-stage example elaborating a number of practical issues. The design of MetaML was based on two main principles that we identified as fundamental for high-level program generation, namely, cross-stage persistence and cross-stage safety. We present these principles, explain the technical problems they give rise to, and how we address with these problems in our implementation.

Place, publisher, year, edition, pages
Amsterdam: Elsevier, 2000. Vol. 248, no 1-2, p. 211-242
Keywords [en]
Functional programming, λ-Calculus, High-level program generation, Type-safety, Type-systems, Programming language semantics, Multi-level languages, Multi-stage languages
National Category
Engineering and Technology
Identifiers
URN: urn:nbn:se:hh:diva-14408DOI: 10.1016/S0304-3975(00)00053-0ISI: 000089745500007Scopus ID: 2-s2.0-0013091874OAI: oai:DiVA.org:hh-14408DiVA, id: diva2:396142
Available from: 2011-02-08 Created: 2011-02-08 Last updated: 2021-05-11Bibliographically approved

Open Access in DiVA

No full text in DiVA

Other links

Publisher's full textScopus

Authority records

Taha, Walid

Search in DiVA

By author/editor
Taha, Walid
In the same journal
Theoretical Computer Science
Engineering and Technology

Search outside of DiVA

GoogleGoogle Scholar

doi
urn-nbn

Altmetric score

doi
urn-nbn
Total: 152 hits
CiteExportLink to record
Permanent link

Direct link
Cite
Citation style
  • apa
  • ieee
  • modern-language-association-8th-edition
  • vancouver
  • Other style
More styles
Language
  • de-DE
  • en-GB
  • en-US
  • fi-FI
  • nn-NO
  • nn-NB
  • sv-SE
  • Other locale
More languages
Output format
  • html
  • text
  • asciidoc
  • rtf