欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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 scheme