我需要为学校作业消除这个Scheme lambda构造。
任何想法如何实现这一目标?
(define (foo x)
(letrec
((h
(lambda (y z)
(cond
((null? y) 'undefined)
((null? (cdr y)) (car z))
(else (h (cddr y) (cdr z)))
))))
(h x x))
)
答案 0 :(得分:3)
好吧,您可以使用内部定义替换lambda
中的letrec
表达式:
(define (foo x)
(define (h y z)
(cond
((null? y) 'undefined)
((null? (cdr y)) (car z))
(else (h (cddr y) (cdr z)))))
(h x x))
...或者您可以在h
之外提取foo
过程,作为帮助程序。无论哪种方式,结果都是一样的。