44 lines
925 B
Scheme
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)
|