2

私は本当に何をする必要があるかを理解するのに苦労しています. 「数のセットを実装する」ために手続き表現を使用するように求められました。各セットは、数値を取り、その数値がセット内にあるかどうかを決定する 1 つの引数関数になります。私が作成しなければならないいくつかの関数(私が読んだことは1行で定義できます):

  1. 数値を引数として取り、その数値がセット内にあるかどうかをチェックする関数を返す関数。
  2. arg1 または arg2 のすべての要素のセットを返すユニオン関数
  3. 上記の交差関数
  4. arg2 ではなく arg1 の要素を返す関数

これは単にラムダ関数を囲んでいるだけであることがわかりましたが、セットを表現してラムダ関数内でチェックする方法について混乱していると思いますか? 誰かが私を正しい方向に向けることができれば、私はそれを感謝します.

4

1 に答える 1

3

TODO リストの最初の関数がコンストラクターであることを認識する必要があります。残りはそこから落ちると思います。

(define (make-set x) (lambda (y) (eq? x y)))
(define (union x y) (lambda (z) (or (x z) (y z))))
(define (intersection x y) (lambda (z) (and (x z) (y z))))
(define (difference x y) (lambda (z) (and (x z) (not (y z)))))

(define set-5 (make-set 5))
(set-5 4)
(set-5 5)

(define set-45 (union (make-set 4) (make-set 5)))
(set-45 3)
(set-45 5)

(define set-34 (union (make-set 3) (make-set 4)))

(define set-4 (intersection set-34 set-45))
(set-4 3)
(set-4 5)
(set-4 4)

(define set-3 (difference set-34 set-45))
(set-3 4)
(set-3 5)
(set-3 3)
于 2013-10-02T03:56:37.673 に答える