榛子

双向结构编辑:Haznut。结构编辑器允许程序员直接编辑程序的树结构。这对认知有好处,特别是对于新手和最终用户程序员。它还简化了工具设计者的问题,因为他们不需要处理格式错误的程序文本。本文介绍了Hazelnut,一个基于小的双向类型lambda演算的结构编辑器,它扩展了孔和光标。Hazelnut超越了语法良好性的一步:它的编辑操作是在静态意义上的不完整术语上操作的。当然,这将迫使程序员以严格的“由外到内”的方式构造术语。为避免自动将一个与类型语义不一致的问题放置在类型内。这有意义地推迟类型一致性检查,直到孔内术语完成。par Hazelnut本身并不打算作为最终用户工具。相反,它是类型化结构编辑的基础。为此,我们描述了Hazelnut丰富的元理论,我们使用Agda证明助手将其机械化,当我们将微积分扩展到包括二进制和类型时,它是如何起到指导作用的。我们还讨论了对空穴的各种解释,从而揭示了与逐步类型和语境模态类型理论的联系,即柯里·霍华德对语境模态逻辑的解释。最后,我们讨论了Hazelnut的语义是如何作为一个基于事件的函数式反应程序来实现的。我们的简单引用实现是使用{tjs_of_ocaml}编写的。