PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
A formulae-as-type notion of control
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A framework for defining logics
Journal of the ACM (JACM)
TIL: a type-directed optimizing compiler for ML
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Cayenne—a language with dependent types
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Dependent types in practical programming
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
From system F to typed assembly language
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Definition of Standard ML
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Meta-programming with names and necessity
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Tagless staged interpreters for typed languages
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Automated Theorem Proving in a Simple Meta-Logic for LF
CADE-15 Proceedings of the 15th International Conference on Automated Deduction: Automated Deduction
Continuation Semantics in Typed Lambda-Calculi (Summary)
Proceedings of the Conference on Logic of Programs
Dependent types in practical programming
Dependent types in practical programming
Meta-programming through typeful code representation
Journal of Functional Programming
Implementing Typeful Program Transformations
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
Dependent ML An approach to practical programming with dependent types
Journal of Functional Programming
Concoqtion: indexed types now!
Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Type-Safe Code Transformations in Haskell
Electronic Notes in Theoretical Computer Science (ENTCS)
A type-preserving closure conversion in haskell
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
A type-preserving compiler in Haskell
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Typed transformations of typed abstract syntax
Proceedings of the 4th international workshop on Types in language design and implementation
Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languages
Journal of Functional Programming
Typed Transformations of Typed Grammars: The Left Corner Transform
Electronic Notes in Theoretical Computer Science (ENTCS)
A fresh look at programming with names and binders
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Implementing Typeful Program Transformations
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
Hi-index | 0.00 |
The notion of program transformation is ubiquitous in programming language studies on interpreters, compilers, partial evaluators, etc. In order to implement a program transformation, we need to choose a representation in the meta language, that is, the programming language in which we construct programs, for representing object programs, that is, the programs in the object language on which the program transformation is to be performed. In practice, most representations chosen for typed object programs are typeless in the sense that the type of an object program cannot be reflected in the type of its representation. This is unsatisfactory as such typeless representations make it impossible to capture in the type system of the meta language various invariants in a program transformation that are related to the types of object programs. In this paper, we propose an approach to implementing program transformations that makes use of a first-order typeful program representation formed in Dependent ML (DML), where the type of an object program as well as the types of the free variables in the object program can be reflected in the type of the representation of the object program. We introduce some programming techniques needed to handle this typeful program representation, and then present an implementation of a CPS transform function where the relation between the type of an object program and that of its CPS transform is captured in the type system of DML. In a broader context, we claim to have taken a solid step along the line of research on constructing certifying compilers.