Journal of Functional Programming · 2005 · 21 citations · 31 references
EngineeringGeneric ProgrammingAutomated ReasoningProgram AnalysisTypeful Code RepresentationDependently Typed ProgrammingFormal MethodsMetaprogrammingSoftware EngineeringComputer ScienceType SystemCode ConstructorsSoftware AnalysisFunctional ProgrammingSoftware DesignFormal Verification
By allowing the programmer to write code that can generate code at run-time, meta-programming offers a powerful approach to program construction. For instance, meta-programming can often be employed to enhance program efficiency and facilitate the construction of generic programs. However, meta-programming, especially in an untyped setting, is notoriously error-prone. In this paper, we aim at making meta-programming less error-prone by providing a type system to facilitate the construction of correct meta-programs. We first introduce some code constructors for constructing typeful code representation in which program variables are represented in terms of deBruijn indexes, and then formally demonstrate how such typeful code representation can be used to support meta-programming. With our approach, a particular interesting feature is that code becomes first-class values, which can be inspected as well as executed at run-time. The main contribution of the paper lies in the recognition and then the formalization of a novel approach to typed meta-programming that is practical, general and flexible.
31
Principal type-schemes for functional programs
Robin Milner · 1982 · 1.1K citations
Mathematical Programming, Principal Type-schemes, Engineering +12
Frank Pfenning, Conal Elliott · ACM SIGPLAN Notices · 1988 · 583 citations · Full text
Template meta-programming for Haskell
Tim Sheard, Simon Peyton Jones · 2002 · 541 citations