diff --git a/step_1.rkt b/step_1.rkt new file mode 100644 index 0000000000000000000000000000000000000000..b5663f72a914a0f97411b3dad939790d16c230b5 --- /dev/null +++ b/step_1.rkt @@ -0,0 +1,33 @@ +#lang r5rs + +(define (point x y) + (define (setx value) + (set! x value)) + (define (add point) + (list (+ x (point 'getx)) (+ y (point 'gety)))) + (define (self m) + (cond ((eq? m 'getx) x) + ((eq? m 'gety) y) + ((eq? m 'type) 'point) + ((eq? m 'info) (list (self 'type) (self 'getx) (self 'gety)) ) + ((eq? m 'setx!) setx ) + ((eq? m 'add) add) + (else (display "ERROR")))) + self) + +(display "coucou") + +(define p1 (point 1 2)) +(define p2 (point 3 4)) +(display (p1 'getx)) +(newline) +(display (p1 'gety)) +(newline) +(display (p1 'type)) +(newline) +(display (p1 'info)) +(newline) +((p1 'setx!) 5) +(display (p1 'getx)) +(newline) +(display ((p1 'add) p2))