#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)