Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Electronic Notes in Theoretical Computer Science (ENTCS)
System Description: Delphin -- A Functional Programming Language for Deductive Systems
Electronic Notes in Theoretical Computer Science (ENTCS)
A universe of binding and computation
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Practical programming with higher-order encodings and dependent types
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
Matching and alpha-equivalence check for nominal terms
Journal of Computer and System Sciences
A fresh look at programming with names and binders
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Programming with binders and indexed data-types
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Beluga: programming with dependent types, contextual data, and contexts
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
Full abstraction for nominal Scott domains
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Combinators for impure yet hygienic code generation
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Hi-index | 0.00 |
FreshML extends ML with constructs for declaring and manipulating abstract syntax trees that involve names and statically scoped binders. It is impure: name generation is an observable side effect. In practice, this means that FreshML allows writing programs that create fresh names and unintentionally fail to bind them. Following in the steps of early work by Pitts and Gabbay, this paper defines Pure FreshML, a subset of FreshML equipped with a static proof system that guarantees purity. Pure FreshML relies on a rich binding specification language, on user-provided assertions, expressed in a logic that allows reasoning about values and about the names that they contain, and on a conservative, automatic decision procedure for this logic. It is argued that Pure FreshML can express non-trivial syntax-manipulating algorithms.