【发布时间】:2016-02-13 14:41:32
【问题描述】:
我看到一个问题,它询问了一种称为 let 的宠物语言中的方法的合同。语言并不重要,但合同是否意味着 该方法作为参数的东西及其评估后的值?
(define extend-env*
(lambda (syms vals old-env)
(if (null? syms)
old-env
(extended-env-record
(car syms)
(car vals)
(extend-env* (cdr syms)
(cdr vals)
old-env)))))
因此,这里的方法采用符号、值和环境,我认为它会产生一个新环境。 这是否意味着此方法的合同是 Identifier(Variable),Value,Environment = Environment ?
【问题讨论】:
-
确实,这就是我所理解的。您与该方法的约定是您承诺向其提供某种类型的参数,并且它会返回某种类型的结果。