缺点是类型为空的列表不起作用



我正在学习《编程语言:应用和解释》一书的第6章http://cs.brown.edu/courses/cs173/2012/book/From_Substitution_to_Environments.html

我已经应用了书中描述的修复程序,但缺点是没有将类型添加到源代码中引用的空列表中。我认为这是一个按值传递/按引用传递的事情,当mt env没有作为参数传递时,如何设置它有什么线索吗?

#lang plai-typed
;; Binding types
(define-type Binding
  [bind (name : symbol) (val : number)])
;; some helper functions:
(define-type-alias Env (listof Binding))
(define mt-env empty)
(define extend-env cons)
;; testing function
(define (addBinding [b : Binding] [env : Env])
  (extend-env b env)
  )
(addBinding (bind 'x 5) mt-env) ;; returns (list (bind x 5))
(display mt-env) ;; returns empty list

以下是上下文完整代码的链接(如果需要),interp函数的appC案例是我的问题区域的具体位置,谢谢。https://github.com/MickDuprez/plai/blob/master/Chapter%206/chapter-6.rkt

重读本章最后一部分几遍后,我认为这个问题没有简单的解决方案。"更改"只会使修改后的解释器与以前的"替换"解释器行为相同,但会通过一个特殊的测试用例突出范围问题。

在下一部分"6.4范围"中,作者写道:

"上面的坏环境解释器实现了所谓的动态范围。"

我相信这将在未来的章节中解决,无论如何都感谢您的关注。

相关内容

  • 没有找到相关文章

最新更新