0

次の手順を作成する必要があります: my-cons、my-car、my-cdr をスキームで作成します。

次のように動作するはずです。

(定義 p1 (my-cons 3 8))

(p1 #t)

3

(p1 #f)

8

(マイカー p1)

3

(my-cdr p1)

8

今、私はこれだけを持っています:

(my-cons を定義する

(ラムダ (xy)

(cons xy)

(let ((a (car (cons xy)))))

 (lambda (a)
  (if (equal? a #f) y x)))))

しかし、このコードでは、定義された p1 に my-cons または my-cdr を適用できません。

4

1 に答える 1

1

my-consまず、ここに属していないように思われる不要なコードがいくつかあります。これで十分です:

(define my-cons
  (lambda (x y)
    (lambda (a)
      (if a x y))))

#t(また、ブール値をorと比較する必要はありません#f— そのままで使用できifます。)

これで、引数に応じてまたはmy-consを返す関数を返すことができました。andを実装するときにそれを使用できます。xymy-carmy-cdr

(define my-car
  (lambda (c)
    (c #t)))

(define my-cdr
  (lambda (c)
    (c #f)))
于 2012-11-26T14:06:24.510 に答える