handball/src/test/run-pass/closure/objects-are-a-poor-mans-clo...

44 lines
925 B
Scheme

#lang scheme
(define get-x 1)
(define get-y 2)
(define do-print 3)
(define add 4)
(define (displayln x)
(display x)
(newline))
(define (vector x y)
(define (add-to other)
(vector (+ x (other get-x)) (+ y (other get-y))))
(lambda (message)
(if (= message get-x)
x
(if (= message get-y)
y
(if (= message add)
add-to
(if (= message do-print)
((lambda ()
(displayln x)
(displayln y)
(newline)))
((lambda ()
(displayln -99)
0))))))))
(define v-1-7 (vector 1 7))
(displayln (v-1-7 get-x))
(displayln (v-1-7 get-y))
(v-1-7 do-print)
(define v-8-2 (vector 8 2))
(displayln (v-8-2 get-x))
(displayln (v-8-2 get-y))
(v-8-2 do-print)
(define v-9-9 ((v-8-2 add) v-1-7))
(v-9-9 do-print)