let在应用序中的一些问题
程序员文章站
2024-02-10 23:33:10
...
首先,lambda-parameters一般代表形参
arguments代表实参
在应用序中,实参在传递给operator前,需要完成求值,因此,例如像
(let ((x 5)
(y (+ x 1)))
(+ x y))
这样的形式,在传递给operator:(+ x y)前,需要完成5,以及 (+ x 1)的求值,但环境中没有x的值,所以在let
内部使用平级的局部变量去定义自己或另一个是不被允许的。
在正则序中,是否可以?
(let ((<var1> <exp1>))
...
(let ((<varn> <expn>))
<body>))
也提现了单步替换的原则:
在lambda算子系统里面,如果给一个lambda函数的参数不足,则得到的就是一个新的lambda函数,这个新的lambda函数所接受的参数也就是你尚未给出的那些参数。换句话来说,调用一个lambda函数可以分若干步来进行,每次只给出一部分参数,而只有等所有参数都给齐了,函数的求值结果才能出来,否则你得到的就是一个“中间函数”。
参考自:
上一篇: Scheme宏的二三事
下一篇: android 获取 imei号码