我正在努力理解我真正需要做的事情,并希望得到一些外部输入或指向一个好的参考。我被要求使用程序表示来“实现数字集”。每个集合将是一个参数函数,它接受一个数字并决定该数字是否在集合中。我必须创建的一些函数(我已经读过,可以在一行中定义):
现在我知道这只是封装一个lambda函数,但我想我对如何表示一个集合并在lambda函数中检查它感到困惑?如果有人能指出我正确的方向,我会很感激。
答案 0 :(得分: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)