语法-1.3:通用抽象语法和嵌入式语言实用程序

安全哈斯克尔

语言。句法。共享.ReifyHO

说明

此模块类似于语言。句法。共享。Reify,但运行AST公司(HODomain公司dom p)而不是将军AST公司。原因有了这个模块,当使用HODomain公司,这很重要同步共享分析和HOLambda公司具体化。显然我们不能首先进行共享分析(使用reifyGraph(重新定义图形)语言。句法。共享.具体化),因为它需要能够看到里面HOLambda公司另一方面,如果我们这样做了HOLambda公司首先具体化(使用使具体化),我们会破坏共享。

本模块基于论文Haskell中的类型安全可观察共享(安迪·吉尔,2009年,http://dx.doi.org/10.1145/15596638.1596653).

简介

文档

reify图形顶部:: (有孔虫a。ASTF公司(HODomain公司dom p pVar)a->布尔) ->ASTF公司(HODomain公司dom p pVar)a->IO(输入输出)(ASG公司(FO域dom p pVar)a,变量Id)来源

将语法树转换为保留共享的图形

reifyGraph(重新定义图形)来源

论据

:: (句法a、,一个~HODomain公司dom p pVar) 
=>(有孔虫a。ASTF公司(HODomain公司dom p pVar)a->布尔)

决定给定节点是否可以共享的函数

->一个 
->IO(输入输出)(ASG公司(FO域dom p pVar)(内部a) ,变量Id) 

将n元句法函数具体化为保共享图

此函数在引用上不透明(因此IO(输入输出)). 然而,它表现良好,因为可能发生的最糟糕的事情就是共享丢失。不可能得到虚假的分享。