Animac icon indicating copy to clipboard operation
Animac copied to clipboard

【特性】约束变量声明+初始化结构`(var <variable> <init>)`

Open bd4sur opened this issue 6 years ago • 0 comments

特性描述:增加(var <variable> <init>),用于声明一个变量<variable>(即建立当前词法作用域上的一个约束变量绑定),并用<init>参数初始化其值。新声明的变量在作用域内是全局有效的,这类似于JavaScript的var变量声明,以及RnRS规定的letrec

为什么要增加这个结构?因为(set! var val)只能修改已绑定的变量为已求值的右值参数,而(define var init)的右值参数只能是未经求值的词法节点把柄/立即值/函数所在IL代码的标签。二者的功能某种程度上是正交的,这一点与RnRS中定义的有所不同。

实现思路:接续执行defineset!。在实现卫生宏之前,在编译器层面实现之。

bd4sur avatar Sep 05 '19 03:09 bd4sur