#lang r7rs ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Appel ADT ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-library () (import (scheme base)) (export maak-appel) (begin ;; ADT Appel ;; maak-appel :: positie -> appel ;; positie :: appel -> positie ;; positie! :: appel, positie -> / ;; maak-appel :: positie -> appel (define (maak-appel positie) ;; positie! :: positie -> / (define (positie! nieuwe-positie) (set! positie nieuwe-positie)) (define (dispatch-appel msg) (cond ((eq? msg 'positie) positie) ((eq? msg 'positie!) positie!) (else (error "Appel ADT -- Onbekend bericht:" msg)))) dispatch-appel) ;; Merk op dat de `dispatch-appel` procedure niet in de beschrijving van het ADT ;; staat! Deze procedure wordt gebruikt om het ADT in een object-gebaseerde ;; stijl te implementeren. De beschrijving van het ADT bevat alleen de operaties ;; die beschikbaar zijn in de dispatch-procedure. Dat betekent dat een procedure ;; die niet beschikbaar gesteld wordt in de dispatch-procedure, geen deel ;; uitmaakt van de beschrijving van het ADT. ))