3

我需要为我的学校作业消除这个 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))
)
4

1 回答 1

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为辅助过程。无论哪种方式,结果都是一样的。

于 2012-05-25T20:13:28.890 回答