Skip to content
Extraits de code Groupes Projets
Valider 341c7fc7 rédigé par Nicolas Verbois's avatar Nicolas Verbois
Parcourir les fichiers

Upload New File

parent c02ecbae
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
(define (point x y)
(define (getx) x )
(define (gety) y )
(define (gettype) 'point )
(define (getinfo)(list (self 'type) (self 'getx) (self 'gety)))
(define (setx value)(set! x value))
(define (sety value)(set! y value))
(define (add p)
(point (+ (getx) (p 'getx)) (+ (gety) (p 'gety))))
(define (self m)
(cond ((eq? m 'getx) (getx))
((eq? m 'gety) (gety))
((eq? m 'type) (gettype))
((eq? m 'info) (getinfo))
((eq? m 'setx!) setx)
((eq? m 'sety!) sety)
((eq? m 'add) add)
(else (error "Message not understood"))))
self)
(define (send p m . args)
(if (procedure? p)
(cond
((null? args) (p m))
(else ((p m) (car args)))
)
(display "Inappropriate receiver object") )
)
( define p1 ( point 1 2 ) )
( define p2 ( point 3 4 ) )
(display ( send p1 'getx )) ; 1
(display ( send p1 'gety )) ; 2
(display ( send p2 'getx )) ; 3
(display ( send p2 'gety )) ; 4
;(display ( send p1 'add p2)) ;(4 6)
(define p (send p1 'add p2))
(display ( send p 'info )) ; ( p o i n t 4 6)
(send p1 'setx! 5)
(display (send p1 'getx )) ; r e t u r n s 5
(display (send 'add 'getx))
\ No newline at end of file
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter