Binders unbound

Implementors of compilers, program refactorers, theorem provers, proof checkers, and other systems that manipulate syntax know that dealing with name binding is difficult to do well. Operations such as α-equivalence and capture-avoiding substitution seem simple, yet subtle bugs often go undetected....

Full description

Bibliographic Details
Main Authors: Stephanie Weirich, Brent A. Yorgey, Tim Sheard
Other Authors: The Pennsylvania State University CiteSeerX Archives
Format: Text
Language:English
Published: ACM 2011
Subjects:
Online Access:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.401.2651
http://www.cis.upenn.edu/~byorgey/pub/unbound.pdf
id ftciteseerx:oai:CiteSeerX.psu:10.1.1.401.2651
record_format openpolar
spelling ftciteseerx:oai:CiteSeerX.psu:10.1.1.401.2651 2023-05-15T15:41:54+02:00 Binders unbound Stephanie Weirich Brent A. Yorgey Tim Sheard The Pennsylvania State University CiteSeerX Archives 2011 application/pdf http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.401.2651 http://www.cis.upenn.edu/~byorgey/pub/unbound.pdf en eng ACM http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.401.2651 http://www.cis.upenn.edu/~byorgey/pub/unbound.pdf Metadata may be used without restrictions as long as the oai identifier remains attached to it. http://www.cis.upenn.edu/~byorgey/pub/unbound.pdf generic programming Haskell name binding patterns text 2011 ftciteseerx 2016-01-08T02:49:25Z Implementors of compilers, program refactorers, theorem provers, proof checkers, and other systems that manipulate syntax know that dealing with name binding is difficult to do well. Operations such as α-equivalence and capture-avoiding substitution seem simple, yet subtle bugs often go undetected. Furthermore, their implementations are tedious, requiring “boilerplate ” code that must be updated whenever the object language definition changes. Many researchers have therefore sought to specify binding syntax declaratively, so that tools can correctly handle the details behind the scenes. This idea has been the inspiration for many new systems (such as Beluga, Delphin, FreshML, FreshOCaml, Cαml, FreshLib, and Ott) but there is still room for improvement in expressivity, simplicity and convenience. In this paper, we present a new domain-specific language, UN-BOUND, for specifying binding structure. Our language is particularly expressive—it supports multiple atom types, pattern binders, type annotations, recursive binders, and nested binding (necessary for telescopes, a feature found in dependently-typed languages). However, our specification language is also simple, consisting of just five basic combinators. We provide a formal semantics for this language derived from a locally nameless representation and prove that it satisfies a number of desirable properties. We also present an implementation of our binding specification language as a GHC Haskell library implementing an embedded domain specific language (EDSL). By using Haskell type constructors to represent binding combinators, we implement the EDSL succinctly using datatype-generic programming. Our implementation supports a number of features necessary for practical programming, including flexibility in the treatment of user-defined types, besteffort name preservation (for error messages), and integration with Haskell’s monad transformer library. Text Beluga Beluga* Unknown Handle The ENVELOPE(161.983,161.983,-78.000,-78.000) Haskell ENVELOPE(-64.279,-64.279,-66.749,-66.749)
institution Open Polar
collection Unknown
op_collection_id ftciteseerx
language English
topic generic programming
Haskell
name binding
patterns
spellingShingle generic programming
Haskell
name binding
patterns
Stephanie Weirich
Brent A. Yorgey
Tim Sheard
Binders unbound
topic_facet generic programming
Haskell
name binding
patterns
description Implementors of compilers, program refactorers, theorem provers, proof checkers, and other systems that manipulate syntax know that dealing with name binding is difficult to do well. Operations such as α-equivalence and capture-avoiding substitution seem simple, yet subtle bugs often go undetected. Furthermore, their implementations are tedious, requiring “boilerplate ” code that must be updated whenever the object language definition changes. Many researchers have therefore sought to specify binding syntax declaratively, so that tools can correctly handle the details behind the scenes. This idea has been the inspiration for many new systems (such as Beluga, Delphin, FreshML, FreshOCaml, Cαml, FreshLib, and Ott) but there is still room for improvement in expressivity, simplicity and convenience. In this paper, we present a new domain-specific language, UN-BOUND, for specifying binding structure. Our language is particularly expressive—it supports multiple atom types, pattern binders, type annotations, recursive binders, and nested binding (necessary for telescopes, a feature found in dependently-typed languages). However, our specification language is also simple, consisting of just five basic combinators. We provide a formal semantics for this language derived from a locally nameless representation and prove that it satisfies a number of desirable properties. We also present an implementation of our binding specification language as a GHC Haskell library implementing an embedded domain specific language (EDSL). By using Haskell type constructors to represent binding combinators, we implement the EDSL succinctly using datatype-generic programming. Our implementation supports a number of features necessary for practical programming, including flexibility in the treatment of user-defined types, besteffort name preservation (for error messages), and integration with Haskell’s monad transformer library.
author2 The Pennsylvania State University CiteSeerX Archives
format Text
author Stephanie Weirich
Brent A. Yorgey
Tim Sheard
author_facet Stephanie Weirich
Brent A. Yorgey
Tim Sheard
author_sort Stephanie Weirich
title Binders unbound
title_short Binders unbound
title_full Binders unbound
title_fullStr Binders unbound
title_full_unstemmed Binders unbound
title_sort binders unbound
publisher ACM
publishDate 2011
url http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.401.2651
http://www.cis.upenn.edu/~byorgey/pub/unbound.pdf
long_lat ENVELOPE(161.983,161.983,-78.000,-78.000)
ENVELOPE(-64.279,-64.279,-66.749,-66.749)
geographic Handle The
Haskell
geographic_facet Handle The
Haskell
genre Beluga
Beluga*
genre_facet Beluga
Beluga*
op_source http://www.cis.upenn.edu/~byorgey/pub/unbound.pdf
op_relation http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.401.2651
http://www.cis.upenn.edu/~byorgey/pub/unbound.pdf
op_rights Metadata may be used without restrictions as long as the oai identifier remains attached to it.
_version_ 1766374780617883648