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

安全哈斯克尔

语言。句法。构造。结合。高级订单

描述

该模块使用高阶语法和功能(使具体化)用于翻译为一阶语法。表达使用导出的接口构造(特别是,不引入变量s显式)保证有良好的翻译。

简介

文档

数据 变量来源

变量

实例

平等 变量

平等的进行严格的标识符比较;即无α等效性。

exprHash(表达式散列)为所有变量分配相同的散列。这是一个有效的启用以下属性的过近似:

字母Eqa b==>exprHash(表达式散列)一个==exprHash(表达式散列)b条
ToTree(ToTree) 变量 
伦德尔 变量 
受约束的 变量 
评估绑定 变量 
优化 变量 
(AlphaEq(阿尔法公式)dom dom环境,可变EqEnv环境)=>字母表Eq 变量 变量dom环境 

数据 哪里来源

Let绑定

只是一个参数顺序颠倒的应用程序运算符。争论(a->b)最好由兰姆达.

建造师

时间:(a):->((a->b):-> 完全b) ) 

数据 HOLambda公司dom p pVar变量哪里来源

高阶lambda绑定

建造师

HOLambda公司::(pa,pVar a)=>(ASTF公司(HODomain公司dom p pVar)a->ASTF公司(HODomain公司dom p pVar)b)->HOLambda公司dom p变量(完全(a->b)) 

类型 HODomain公司dom p pVar=(HOLambda公司dom p变量:+:((变量 :||pVar):+:dom)):||来源

向域中添加对高阶抽象语法的支持

类型 FO域dom p pVar=(CLambda公司pVar(无功功率):+:((变量 :||pVar):+:dom))以下为:||来源

相当于HODomain公司(包括类型约束),但使用一阶表示绑定的

类型 CLambda公司pVar(无功功率)=次级施工2(->)兰姆达pVar(无功功率)顶部来源

兰姆达对绑定变量类型有约束

λ::(p(a->b),pa,pVar a)=>(ASTF公司(HODomain公司dom p pVar)a->ASTF公司(HODomain公司dom p pVar)b)->ASTF公司(HODomain公司dom p pVar)(a->b)来源

Lambda绑定

reifyM公司时间:对于所有人dom p pVar a。AST公司(HODomain公司dom p pVar)a-> 变量Id(AST公司(FO域域p pVar)a)来源

reifyTop(重新定义顶部)时间:AST公司(HODomain公司dom p pVar)a->AST公司(FO域dom p pVar)一个来源

将具有高阶绑定的表达式转换为相应的使用一阶绑定的表达式

使具体化:: (句法a、,一个~HODomain公司dom p pVar)=>a->ASTF公司(FO域dom p pVar)(内部a)来源

使n元句法函数具体化