Affiliation:
1. University of Edinburgh, Edinburgh, United Kingdom
Abstract
Recent research has shown how
boilerplate
code, or repetitive code for traversing datatypes, can be eliminated using generic programming techniques already available within some implementations of Haskell. One particularly intractable kind of boilerplate is
nameplate
, or code having to do with names, name-binding, and fresh name generation. One reason for the difficulty is that operations on data structures involving names, as usually implemented, are not regular instances of standard
map
,
fold
, or
zip
operations. However, in
nominal abstract syntax
, an alternative treatment of names and binding based on swapping, operations such as α-equivalence, capture-avoiding substitution, and free variable set functions are much better-behaved.In this paper, we show how nominal abstract syntax techniques similar to those of FreshML can be provided as a Haskell library called
FreshLib
. In addition, we show how existing genericmprogramming techniques can be used to reduce the amount of nameplate code that needs to be written for new datatypes involving names and binding to almost nothing—in short, how to
scrap your nameplate
.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Reference34 articles.
1. Glasgow Parallel Haskell June 2005. http://www.macs.hw.ac.uk/-~dsg/gph/. Glasgow Parallel Haskell June 2005. http://www.macs.hw.ac.uk/-~dsg/gph/.
2. Explicit substitutions
3. Functional Pearl: On generating unique names
4. Mechanized Metatheory for the Masses: The PoplMark Challenge
Cited by
9 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Formalisation in Constructive Type Theory of Barendregt's Variable Convention for Generic Structures with Binders;Electronic Proceedings in Theoretical Computer Science;2018-07-03
2. Visitors unchained;Proceedings of the ACM on Programming Languages;2017-08-29
3. αCheck: A mechanized metatheory model checker;Theory and Practice of Logic Programming;2017-05
4. General Bindings and Alpha-Equivalence in Nominal Isabelle;Logical Methods in Computer Science;2012-06-20
5. A dependent nominal type theory;Logical Methods in Computer Science;2012-02-20