榛子

Hazelnut:双向类型结构编辑器演算。结构编辑器允许程序员直接编辑程序的树形结构。这可以有认知上的好处,尤其是新手和最终用户程序员。它也简化了工具设计者的问题,因为它们不需要与畸形的程序文本相抗衡。本文介绍了榛子,一种基于一个小的双向类型的lambda演算的结构编辑器,扩展了孔和光标。榛子超越句法良好的一步:它的编辑动作在静态有意义的不完整的术语上运行。n' { } { } },这将迫使程序员以僵硬的“外部”方式构造术语。为了避免这个问题,动作语义自动地放置一个与一个孔内的预期类型不一致的类型的术语。这有意义地推迟了类型一致性检查,直到孔内的术语是finished.par Hazelnut不打算作为最终用户工具本身。相反,它作为类型化结构编辑的基础性帐户。为此,我们描述了榛子丰富的元理论,我们机械化使用AGDA证明助理,当我们将微积分扩展到包括二进制和类型时,作为指导。我们还讨论了各种解释的孔,并在这样做揭示连接与渐进式和上下文模态类型理论,Curry Howard解释上下文模态逻辑。最后,我们讨论榛子的语义如何作为一个基于事件的功能性反应程序来实现。我们的简单参考实现是使用{tjsfO-oOcAML}编写的。