在学习SICP时,6.001 lec15具有:
对环境模型的良好理解告诉我为什么(恕我直言)C++ 永远不会有功能齐全的 map、 filter 和 fold-right/fold-left 程序,像 Scheme 一样方便
SICP实现map
:
(define (map proc items)
(if (null? items)
nil
(cons (proc (car items))
(map proc (cdr items)))))
这里每个递归调用map
都会为每个参数列表创建一个新的环境(proc items)
,因此它们可以独立(类似于proc
和cons
等)。
但我认为,在 C++ 中,上述代码可以基于堆栈以相同的思想完成。因此仍然保持独立性。
为什么 lec 会说由于“环境模型”, “C++ 永远不会拥有功能齐全的地图”?