【故障】Native函数的一等化未实现
bd4sur opened this issue · comments
复现用例与故障描述:
((lambda (f x) (f x)) Native.Read "path..")
;; 报错“变量Native.Read未定义”
原因分析与补救措施:
原因在于编译阶段未对Native函数名作特殊处理,而是当成普通变量直接load。再由于VM中也未处理,导致出错。
Native函数的本质是用于指明外部库的符号,因此Native函数的一等化,实际上是指将Native函数的名称作为符号原子处理。
补救措施是,在编译阶段增加相应分支,改load为push。另外Process
类中的工具函数IsUseNative
宜移动至AST
类。