在任何Scheme标准中,(let (x y z) x)是否为合法代码?
Scheme中
(let (x y z) x)是否符合标准? 这种写法完全不符合任何Scheme官方标准,你测试的所有Scheme实现报错都是符合规范的行为,具体原因如下:
- 从R5RS到最新的R7RS,所有Scheme标准都明确规定:
let的每个绑定项必须是一个二元列表,格式为(变量名 初始化表达式)。如果需要让变量初始化为nil,必须显式写成(x nil)、(y nil)、(z nil),不能仅用单个符号省略初始化部分。 - Common Lisp和Emacs Lisp里的
let支持省略初始化表达式的语法,默认将变量绑定到nil,这是这两种Lisp方言独有的语法糖,Scheme标准并未引入该特性。
内容的提问来源于stack exchange,提问作者J. Mini
相关产品推荐
相关产品推荐

