Here is another data definition for a set of numbers:
;; a set of numbers is a function:
;; number -> boolean
The intention is that applying the set to a number determines if the number is in the set. For example, this function:
(lambda (x) false)
represents the set with no numbers and this function:
(lambda (x) (or (= x 2) (= x 1)))
represents the set that contains only the numbers 1 and 2.
Develop the same three functions from the previous page, but using the new data definition:
;;start : number -> set-of-numbers
;; to build a new set of numbers that contains only n (define (start n) ...) ;;extend : number set-of-numbers -> set-of-numbers
;; to build a bigger set of numbers, extending son. (define (extend n son) ...) ;;test : number set-of-numbers -> boolean
;; to determine if n is in son. (define (test n son) ...)
Solution
;;start : number -> set-of-numbers
;; to build a new set of numbers that contains only n (define (start n) (lambda (x) (= x n))) ;;extend : number set-of-numbers -> set-of-numbers
;; to build a bigger set of numbers, extending son. (define (extend n son) (lambda (y) (or (= n y) (son y)))) ;;test : number set-of-numbers -> boolean
;; to determine if n is in son. (define (test n son) (son n))