PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
The formal semantics of programming languages: an introduction
The formal semantics of programming languages: an introduction
Theoretical aspects of object-oriented programming: types, semantics, and language design
Theoretical aspects of object-oriented programming: types, semantics, and language design
ACM Transactions on Programming Languages and Systems (TOPLAS)
Building domain-specific embedded languages
ACM Computing Surveys (CSUR) - Special issue: position statements on strategic directions in computing research
Eliminating array bound checking through dependent types
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Encoding types in ML-like languages
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Final Data Types and Their Specification
ACM Transactions on Programming Languages and Systems (TOPLAS)
Programming Methodology: A Collection of Articles by Members of IFIP WG 2.3
Programming Methodology: A Collection of Articles by Members of IFIP WG 2.3
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Guarded recursive datatype constructors
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Encoding Intensional Type Analysis
ESOP '01 Proceedings of the 10th European Symposium on Programming Languages and Systems
Type-Directed Partial Evaluation
Partial Evaluation - Practice and Theory, DIKU 1998 International Summer School
Journal of Functional Programming
Combinators for program generation
Journal of Functional Programming
Journal of Functional Programming
TypeCase: a design pattern for type-indexed functions
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
Type-safe run-time polytypic programming
Journal of Functional Programming
Foundations for structured programming with GADTs
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Boxes go bananas: Encoding higher-order abstract syntax with parametric polymorphism*
Journal of Functional Programming
Journal of Functional Programming
A type-preserving compiler in Haskell
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
Syntax for Free: Representing Syntax with Binding Using Parametricity
TLCA '09 Proceedings of the 9th International Conference on Typed Lambda Calculi and Applications
Purely functional lazy non-deterministic programming
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Unembedding domain-specific languages
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell
Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languages
Journal of Functional Programming
On typing delimited continuations: three new solutions to the printf problem
Higher-Order and Symbolic Computation
Tag-Free combinators for binding-time polymorphic program generation
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
A generic abstract syntax model for embedded languages
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Generic programming with dependent types
SSGIP'10 Proceedings of the 2010 international spring school conference on Generic and Indexed Programming
Hi-index | 0.00 |
The so-called ‘typed tagless final' approach of [6] has collected and polished a number of techniques for representing typed higher-order languages in a typed metalanguage, along with type-preserving interpretation, compilation and partial evaluation. The approach is an alternative to the traditional, or ‘initial' encoding of an object language as a (generalized) algebraic data type. Both approaches permit multiple interpretations of an expression, to evaluate it, pretty-print, etc. The final encoding represents all and only typed object terms without resorting to generalized algebraic data types, dependent or other fancy types. The final encoding lets us add new language forms and interpretations without breaking the existing terms and interpreters. These lecture notes introduce the final approach slowly and in detail, highlighting extensibility, the solution to the expression problem, and the seemingly impossible pattern-matching. We develop the approach further, to type-safe cast, run-time-type representation, Dynamics, and type reconstruction. We finish with telling examples of type-directed partial evaluation and encodings of type-and-effect systems and linear lambda-calculus.