#lang r7rs ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Slang Stuk ADT ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define-library () (import (scheme base)) (export maak-slang-stuk) (begin ;; We willen een slang voorstellen. Dit doen we natuurlijk door meerdere ;; lichaamsdelen te tekenen. We hebben een hoofd en de rest van de staart die ;; bestaat uit verschillende blokjes. Om het gemakkelijk te maken stellen we het ;; hoofd hetzelfde voor als het lichaam. Dit wil zeggen dat de slang ;; uiteindelijk zal bestaan uit een lijst van objectjes van het Slang Stuk ADT. ;; maak-slang-stuk :: positie -> slang-stuk (define (maak-slang-stuk positie) ;; positie! :: positie -> / (define (positie! nieuwe-positie) (set! positie nieuwe-positie)) ;; Dispatch functie (define (dispatch-slang-stuk msg) (cond ((eq? msg 'positie) positie) ((eq? msg 'positie!) positie!) (else (error "Slang Stuk ADT -- Onbekend bericht:" msg)))) dispatch-slang-stuk)))