在方案中消除lambda?

在方案中消除lambda?,lambda,functional-programming,scheme,lambda-calculus,Lambda,Functional Programming,Scheme,Lambda Calculus,我需要在我的学校作业中取消这个方案 有没有办法做到这一点 (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)) ) 那么,您可以用内部定义替换letrec中的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))
)

那么,您可以用内部定义替换
letrec
中的
lambda
表达式:

(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))

。。。或者您可以在
foo
之外提取
h
过程作为辅助过程。无论哪种方式,结果都是一样的。

我真的不明白为什么他们会在作业中要求他们这样做。另一种方式(看到内部定义是
letrec
)似乎更有指导意义