未绑定

粘合剂未绑定。编译器、程序重构器、定理证明器、检验器和其他操作语法的系统的示例都知道,处理名称绑定很难做好。诸如α-等价和避免捕获替换之类的操作看起来很简单,但是细微的错误通常不会被发现。此外,它们的实现是乏味的,需要“样板”代码,每当对象语言定义发生变化时,这些代码都必须更新。因此,许多研究人员试图以声明的方式指定绑定语法,以便工具能够正确地处理幕后的细节。这一想法启发了许多新系统(如Beluga、Delphin、FreshML、FreshOCaml、Cαml、FreshLib和Ott),但在表现力、简洁性和便利性方面仍有改进的余地。在本文中,我们提出了一种新的领域专用语言Unbound,用于指定绑定结构。我们的语言特别具有表现力——它支持多原子类型、模式绑定器、类型注释、递归绑定器和嵌套绑定(对于望远镜来说是必需的,这是独立类型语言中的一个特性)。然而,我们的规范语言也很简单,只包含五个基本的组合词。我们证明了它满足一个局部派生的无名称语义的若干性质。我们还将绑定规范语言的实现作为实现嵌入式领域特定语言(EDSL)的GHC-Haskell库。通过使用Haskell类型构造函数来表示绑定组合子,我们使用数据类型泛型编程简洁地实现了EDSL。我们的实现支持许多实用编程所必需的特性,包括处理用户定义类型的灵活性、尽力保存名称(用于错误消息)以及与Haskell的monad transformer库的集成。

此软件的关键字

这里的任何内容都将在支持canvas元素的浏览器上被替换