返回在 Scheme 中调用了多少次的函数看起来像
(define count
(let ((P 0))
(lambda ()
(set! P (+ 1 P))
P)))
(list (count) (count) (count) (count)) ==> (list 1 2 3 4)
但是假设我们有一个看起来像这样的表达式
(map ______ lst)
我们希望它评估为
(list 1 2 3 ... n)
where n = (length list)
问题要求我们在空格中使用 lambda 语句,并且不能在空格中使用任何辅助定义,如 (count),所以
(lambda (x) (count))
不被允许。只需将 (count) 替换为之前的定义,如下所示:
(map
(lambda (x)
((let ((P 0))
(lambda ()
(set! P (+ 1 P))
P))))
L)
也不行。
有什么建议么?