;;; Exercice 1 ;; 1 à 6: a tester soi-meme ;;; Exercice 2 ;; 7. function ;; 8. a tester soi-meme ;; 9. (defvar *i-naturals* (lambda (i) (declare (ignore i)) t) "set of natural integers" ) ;; 10. (defun multiple-of (d) "multiples of d" (lambda (i) (zerop (mod i d)))) ;; 11. (defun i-complement (set) "complement of SET" (lambda (i) (not (i-member i set)))) ;; 12. (defun i-intersection (s1 s2) "intersection of S1 and S2" (lambda (i) (and (i-member i s1) (i-member i s2)))) ;; 13. (defun i-intersection (&rest sets) (lambda (i) (every (lambda (set) (i-member i set)) sets))) ;; 14. (defun i-less-than (set n) ;; recursive terminale (labels ((aux (i l) (if (> i n) l (let ((r (i-member i set))) (aux (1+ i) (if r (cons i l) l)))))) (nreverse (aux 0 '())))) (defun i-sequence (set n &key (start 0)) (labels ((aux (i j l) (if (>= j n) l (let ((r (i-member i set))) (if r (aux (1+ i) (1+ j) (cons i l)) (aux (1+ i) j l)))))) (nreverse (aux start 0 '()))))