CS61A-Lec27 Interpreters 学习笔记
Scheme的解释器很大程度上基于计算器 ,并且shceme程序本身就是一个数据结构(list),data is program,program is data
1)scheme_reader
2) scheme_eval 计算剩余部分,它有一个副作用,会去掉第一个表达式,否则返回EOF
3) scheme_apply将函数作用于参数
func(*args) 即 把列表转换为参数
对于函数来说,有两种情况,一种是primitive,built-in function,另一种是user-defined function,也就是用户通过define 或者 lambda自定义的函数。
对于用户自定义函数,将其作为表达式进行处理,也就是调用scheme_apply,apply再调用eval
scheme中的表达式比如3他就是自举的,即3
shceme提供解释器的函数,apply和eval
对于有符号的表达式,就是计算expression和环境(scope)。
对于lambda和函数,需要了解它的参数,函数体和父环境