2012-05-25 3 views
3

학교 과제물에 대한이 Scheme lambda construction을 제거해야합니다.Scheme에서 람다를 제거 하시겠습니까?

아이디어가 있습니까?

(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 절차를 추출 할 수 있습니다 :

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

답변

3

글쎄, 당신은 내부 정의와 letrec에서 lambda 표현을 대체 할 수있다. 어쨌든 결과는 같을 것이다.

+1

나는 임무 지내야하는 이유를 정말로 이해하지 못합니다. 다른 방법 (내부 정의가 'letrec'이라는 것을 보는 것)이 더 유익한 것처럼 보인다. – newacct