3

学校の課題のために、このスキームのラムダ構造を排除する必要があります。

これを達成する方法はありますか?

(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 に答える