PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Metacircularity in the polymorphic &lgr;-calculus
TAPSOFT '89 2nd international joint conference on Theory and practice of software development
Formal parametric polymorphism
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Bananas in space: extending fold and unfold to exponential types
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Revisiting catamorphisms over datatypes with embedded functions (or, programs from outer space)
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Domain specific embedded compilers
Proceedings of the 2nd conference on Domain-specific languages
Composing contracts: an adventure in financial engineering (functional pearl)
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Types and programming languages
Types and programming languages
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
A lightweight implementation of generics and dynamics
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
A foundation for embedded languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Naturally Embedded Query Languages
ICDT '92 Proceedings of the 4th International Conference on Database Theory
Proceedings of the ESPRIT Working Group 8533 on Prospects for Hardware Foundations: NADA - New Hardware Design Methods, Survey Chapters
WASH/CGI: Server-Side Web Scripting with Sessions and Typed, Compositional Forms
PADL '02 Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages
A Logic for Parametric Polymorphism
TLCA '93 Proceedings of the International Conference on Typed Lambda Calculi and Applications
Constructions: A Higher Order Proof System for Mechanizing Mathematics
EUROCAL '85 Invited Lectures from the European Conference on Computer Algebra-Volume I - Volume I
Towards a theory of type structure
Programming Symposium, Proceedings Colloque sur la Programmation
Journal of Functional Programming
Shrinking lambda expressions in linear time
Journal of Functional Programming
Type-FUNCTIONAL PEARL safe cast
Journal of Functional Programming
Compiling with continuations, continued
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
A type-preserving closure conversion in haskell
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Applicative programming with effects
Journal of Functional Programming
Boxes go bananas: Encoding higher-order abstract syntax with parametric polymorphism*
Journal of Functional Programming
Focusing on Binding and Computation
LICS '08 Proceedings of the 2008 23rd Annual IEEE Symposium on Logic in Computer Science
A type-preserving compiler in Haskell
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Paradise: a two-stage DSL embedded in Haskell
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Proceedings of the 2008 ACM SIGPLAN workshop on ML
GPCE '08 Proceedings of the 7th international conference on Generative programming and component engineering
FERRY: database-supported program execution
Proceedings of the 2009 ACM SIGMOD International Conference on Management of data
Parameterised notions of computation
Journal of Functional Programming
Finally tagless, partially evaluated: Tagless staged interpreters for simpler typed languages
Journal of Functional Programming
Shrinking reductions in SML.NET
IFL'04 Proceedings of the 16th international conference on Implementation and Application of Functional Languages
Nikola: embedding compiled GPU functions in Haskell
Proceedings of the third ACM Haskell symposium on Haskell
A fresh look at programming with names and binders
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Modular domain-specific language components in scala
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Accelerating Haskell array codes with multicore GPUs
Proceedings of the sixth workshop on Declarative aspects of multicore programming
Hobbits for Haskell: a library for higher-order encodings in functional programming languages
Proceedings of the 4th ACM symposium on Haskell
Embedding polymorphic dynamic typing
Proceedings of the seventh ACM SIGPLAN workshop on Generic programming
Towards typing for small-step direct reflection
PEPM '12 Proceedings of the ACM SIGPLAN 2012 workshop on Partial evaluation and program manipulation
A Computational Interpretation of Parametricity
LICS '12 Proceedings of the 2012 27th Annual IEEE/ACM Symposium on Logic in Computer Science
Proceedings of the 8th ACM SIGPLAN workshop on Generic programming
Generic conversions of abstract syntax representations
Proceedings of the 8th ACM SIGPLAN workshop on Generic programming
Explicitly heterogeneous metaprogramming with MetaHaskell
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Typed tagless final interpreters
SSGIP'10 Proceedings of the 2010 international spring school conference on Generic and Indexed Programming
Optimising purely functional GPU programs
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
Higher-order abstract syntax provides a convenient way of embedding domain-specific languages, but is awkward to analyse and manipulate directly. We explore the boundaries of higher-order abstract syntax. Our key tool is the unembedding of embedded terms as de Bruijn terms, enabling intensional analysis. As part of our solution we present techniques for separating the definition of an embedded program from its interpretation, giving modular extensions of the embedded language, and different ways to encode the types of the embedded language.