我遇到了Scheme中一些棘手的lambda表达式的问题,我想看看它们是如何被解释器评估的。跟踪lambda表达式评估
我希望Scheme解释器打印所有的评估步骤,如SICP Section 1.1.5, "The Substitution Model for Procedure Application"所示。
我正在寻找使用任何Scheme解释器的解决方案。我已经尝试过Racket's tracing,但它只跟踪过程调用,而不是每个表达式。
激励例如
鉴于Church数从SICP Exercise 2.6定义:
(define zero (lambda (f) (lambda (x) x)))
(define (add-1 n)
(lambda (f) (lambda (x) (f ((n f) x)))))
和任务:
定义
one
和two
直接(不依照zero
条款和add-1
)。
我想检查我的one
和two
定义对评估(add-1 zero)
和(add-1 (add-1 zero))
的结果。
这是我想的Scheme解释打印出来:
> (add-1 zero)
(add-1 (lambda (f) (lambda (x) x)))
(lambda (f) (lambda (x) (f (((lambda (f) (lambda (x) x)) f) x))))
(lambda (f) (lambda (x) (f ((lambda (x) x) x))))
(lambda (f) (lambda (x) (f x)))
>
可能的重复http://stackoverflow.com/questions/14790241/scheme-expand-procedure-calls – 2013-02-16 16:46:04