The typechecking of programs with implicit type structure.
Proc. of the international symposium on Semantics of data types
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
ML for the working programmer (2nd ed.)
ML for the working programmer (2nd ed.)
Algebra of programming
Multi-stage programming with explicit annotations
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Revised report on the algorithmic language scheme
ACM SIGPLAN Lisp Pointers
Introduction to Functional Programming
Introduction to Functional Programming
MPC '98 Proceedings of the Mathematics of Program Construction
From fast exponentiation to square matrices: an adventure in types
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
A new approach to generic functional programming
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Scrap your boilerplate: a practical design pattern for generic programming
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
Monadic Presentations of Lambda Terms Using Generalized Inductive Types
CSL '99 Proceedings of the 13th International Workshop and 8th Annual Conference of the EACSL on Computer Science Logic
Monotone Inductive and Coinductive Constructors of Rank 2
CSL '01 Proceedings of the 15th International Workshop on Computer Science Logic
Generalizing generalized tries
Journal of Functional Programming
Journal of Functional Programming
Confluence of the coinductive λ-calculus
Theoretical Computer Science
ACM SIGPLAN Notices
Functional pearl: i am not a number--i am a free variable
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
Substitution in non-wellfounded syntax with variable binding
Theoretical Computer Science - Selected papers of CMCS'03
Combining higher-order abstract syntax with first-order abstract syntax in ATS
Proceedings of the 3rd ACM SIGPLAN workshop on Mechanized reasoning about languages with variable binding
Explicit substitutions and higher-order syntax
Higher-Order and Symbolic Computation
Practical type inference for arbitrary-rank types
Journal of Functional Programming
Iteration and coiteration schemes for higher-order and nested datatypes
Theoretical Computer Science - Foundations of software science and computation structures
A history of Haskell: being lazy with class
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Clowns to the left of me, jokers to the right (pearl): dissecting data structures
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Foundations for structured programming with GADTs
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Recursion on Nested Datatypes in Dependent Type Theory
CiE '08 Proceedings of the 4th conference on Computability in Europe: Logic and Theory of Algorithms
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
Implementing a normalizer using sized heterogeneous types
Journal of Functional Programming
An induction principle for nested datatypes in intensional type theory
Journal of Functional Programming
A universe of binding and computation
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Electronic Notes in Theoretical Computer Science (ENTCS)
A principled approach to programming with nested types in Haskell
Higher-Order and Symbolic Computation
Modules over monads and initial semantics
Information and Computation
Generalized iteration and coiteration for higher-order nested datatypes
FOSSACS'03/ETAPS'03 Proceedings of the 6th International conference on Foundations of Software Science and Computation Structures and joint European conference on Theory and practice of software
(Co-) iteration for higher-order nested datatypes
TYPES'02 Proceedings of the 2002 international conference on Types for proofs and programs
Modules over monads and linearity
WoLLIC'07 Proceedings of the 14th international conference on Logic, language, information and computation
Initial algebra semantics is enough!
TLCA'07 Proceedings of the 8th international conference on Typed lambda calculi and applications
LPAR'07 Proceedings of the 14th international conference on Logic for programming, artificial intelligence and reasoning
Using Coq to understand nested datatypes
EUROCAST'07 Proceedings of the 11th international conference on Computer aided systems theory
A fresh look at programming with names and binders
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Proceedings of the third ACM SIGPLAN workshop on Mathematically structured functional programming
Map fusion for nested datatypes in intensional type theory
Science of Computer Programming
Types for units-of-measure: theory and practice
CEFP'09 Proceedings of the Third summer school conference on Central European functional programming school
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
A foundation for GADTs and inductive families: dependent polynomial functor approach
Proceedings of the seventh ACM SIGPLAN workshop on Generic programming
2-Dimensional Directed Type Theory
Electronic Notes in Theoretical Computer Science (ENTCS)
Polarized subtyping for sized types
CSR'06 Proceedings of the First international computer science conference on Theory and Applications
PADL'10 Proceedings of the 12th international conference on Practical Aspects of Declarative Languages
Formalized metatheory with terms represented by an indexed family of types
TYPES'04 Proceedings of the 2004 international conference on Types for Proofs and Programs
Epigram: practical programming with dependent types
AFP'04 Proceedings of the 5th international conference on Advanced Functional Programming
Towards generic programming with sized types
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
A datastructure for iterated powers
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
Implementing a normalizer using sized heterogeneous types
MSFP'06 Proceedings of the 2006 international conference on Mathematically Structured Functional Programming
Verification of programs on truly nested datatypes in intensional type theory
MSFP'06 Proceedings of the 2006 international conference on Mathematically Structured Functional Programming
Strongly Typed Term Representations in Coq
Journal of Automated Reasoning
Dependently typed programming with singletons
Proceedings of the 2012 Haskell Symposium
Names for free: polymorphic views of names and binders
Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
Verified programs with binders
Proceedings of the ACM SIGPLAN 2014 Workshop on Programming Languages meets Program Verification
Hi-index | 0.00 |
“I have no data yet. It is a capital mistake to theorise before one has data.” Sir Arthur Conan Doyle The Adventures of Sherlock Holmesde Bruijn notation is a coding of lambda terms in which each occurrence of a bound variable x is replaced by a natural number, indicating the ‘distance’ from the occurrence to the abstraction that introduced x. One might suppose that in any datatype for representing de Bruijn terms, the distance restriction on numbers would have to be maintained as an explicit datatype invariant. However, by using a nested (or non-regular) datatype, we can define a representation in which all terms are well-formed, so that the invariant is enforced automatically by the type system. Programming with nested types is only a little more difficult than programming with regular types, provided we stick to well-established structuring techniques. These involve expressing inductively defined functions in terms of an appropriate fold function for the type, and using fusion laws to establish their properties. In particular, the definition of lambda abstraction and beta reduction is particularly simple, and the proof of their associated properties is entirely mechanical.