Jump to content

Set of real numbers: Difference between revisions

Add Common Lisp implementation
(Add Common Lisp implementation)
Line 155:
(def I #(∖ R Z Q))
(def N #(∖ Z neg?))</lang>
 
=={{header|Common Lisp}}==
Common Lisp has a standard way to represent intervals.
<lang lisp>(deftype set== (a b) `(real ,a ,b))
(deftype set<> (a b) `(real (,a) (,b)))
(deftype set=> (a b) `(real ,a (,b)))
(deftype set<= (a b) `(real (,a) ,b))
 
(deftype set-union (i1 i2) `(or ,i1 ,i2))
(deftype set-intersection (i1 i2) `(and ,i1 ,i2))
(deftype set-diff (i1 i2) `(and ,i1 (not ,i2)))
 
(defun in-set-p (x set)
(typep x set))
 
(defun test ()
(let ((set '(set-union (set<= 0 1) (set=> 0 2))))
(assert (in-set-p 0 set))
(assert (in-set-p 1 set))
(assert (not (in-set-p 2 set))))
(let ((set '(set-intersection (set=> 0 2) (set<= 1 2))))
(assert (not (in-set-p 0 set)))
(assert (not (in-set-p 1 set)))
(assert (not (in-set-p 2 set))))
(let ((set '(set-diff (set=> 0 3) (set<> 0 1))))
(assert (in-set-p 0 set))
(assert (in-set-p 1 set))
(assert (in-set-p 2 set)))
(let ((set '(set-diff (set<= 0 3) (set== 0 1))))
(assert (not (in-set-p 0 set)))
(assert (not (in-set-p 1 set)))
(assert (in-set-p 2 set))))</lang>
 
=={{header|D}}==
68

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.