;;; Ein charfun-set(X) ist eine Struktur (define-struct charfun-set (= chi)) ;;; Dabei ist =: X X -> boolean und chi: X -> boolean ;;; SIGNATUR ;;; make-empty-charfun-set: (X X -> boolean) X -> boolean -> charfun-set(X) ;;; ERKLÄRUNG ;;; (make-empty-charfun-set = <) Erzeugt eine leere Menge in ;;; charfun-set-Darstellung mit Gleicheitsprädikat = und Ordnungsrelation <. ;;; DEFINITION (define make-empty-charfun-set (lambda (= <) (make-charfun-set = (lambda (x) #f)))) ;;; SIGNATUR ;;; charfun-set-insert: X charfun-set(X) -> charfun-set(X) ;;; ERKLÄRUNG ;;; (charfun-set-insert x s) erzeugt eine neue Mengendarstellung, die aus den ;;; Elementen von s und dem Objekt x besteht. ;;; DEFINITION (define charfun-set-insert (lambda (x s) (let ((= (charfun-set-= s))) (make-charfun-set = (lambda (e) (or (= e x) ((charfun-set-chi s) e))))))) ;;; SIGNATUR ;;; charfun-set-remove: X charfun-set(X) -> charfun-set(X) ;;; ERKLÄRUNG ;;; (charfun-set-remove x s) erzeugt eine neue Mengendarstellung, die aus den ;;; Elementen von s ohne x besteht. ;;; DEFINITION (define charfun-set-remove (lambda (x s) (let ((= (charfun-set-= s))) (make-charfun-set = (lambda (e) (and (not (= e x)) ((charfun-set-chi s) e))))))) ;;; SIGNATUR ;;; charfun-set-elem: X charfun-set(X) -> charfun-set(X) ;;; ERKLÄRUNG ;;; (charfun-set-elem x s) liefert #t zurück, falls x in der ;;; Mengendarstellung s enthalten ist, #f sonst. ;;; DEFINITION (define charfun-set-elem (lambda (x s) ((charfun-set-chi s) x)))