26
views
0
recommends
+1 Recommend
0 collections
    0
    shares
      • Record: found
      • Abstract: not found
      • Article: not found

      MetaML and multi-stage programming with explicit annotations

      ,
      Theoretical Computer Science
      Elsevier BV

      Read this article at

      ScienceOpenPublisher
      Bookmark
          There is no author summary for this article yet. Authors can add summaries to their articles on ScienceOpen to make them more accessible to a non-specialist audience.

          Related collections

          Most cited references16

          • Record: found
          • Abstract: not found
          • Conference Proceedings: not found

          Reflection and semantics in LISP

            Bookmark
            • Record: found
            • Abstract: not found
            • Conference Proceedings: not found

            Tutorial notes on partial evaluation

              Bookmark
              • Record: found
              • Abstract: found
              • Article: not found

              A partial evaluator for the untyped lambda-calculus

              This article describes theoretical and practical aspects of an implemented self-applicable partial evaluator for the untyped lambda-calculus with constants and a fixed point operator. To the best of our knowledge, it is the first partial evaluator that is simultaneously higher-order, non-trivial, and self-applicable. Partial evaluation produces a residual program from a source program and some of its input data. When given the remaining input data the residual program yields the same result that the source program would when given all its input data. Our partial evaluator produces a residual lambda-expression given a source lambda-expression and the values of some of its free variables. By self-application, the partial evaluator can be used to compile and to generate stand-alone compilers from a denotational or interpretive specification of a programming language. An essential component in our self-applicable partial evaluator is the use of explicit binding time information. We use this to annotate the source program, marking as residual the parts for which residual code is to be generated and marking as eliminable the parts that can be evaluated using only the data that is known during partial evaluation. We give a simple criterion, well-annotatedness, that can be used to check that the partial evaluator can handle the annotated higher-order programs without committing errors. Our partial evaluator is simple, is implemented in a side-effect free subset of Scheme, and has been used to compile and to generate compilers and a compiler generator. In this article we examine two machine-generated compilers and find that their structures are surprisingly natural.
                Bookmark

                Author and article information

                Journal
                Theoretical Computer Science
                Theoretical Computer Science
                Elsevier BV
                03043975
                October 2000
                October 2000
                : 248
                : 1-2
                : 211-242
                Article
                10.1016/S0304-3975(00)00053-0
                52cc1e15-f236-4030-bc2c-3f66f000df69
                © 2000

                http://www.elsevier.com/tdm/userlicense/1.0/

                History

                Comments

                Comment on this article