SICP 2.46

何だ、図形言語と関係ないじゃないか。

(define make-vect cons)
(define xcor-vect car)
(define ycor-vect cdr)

(define (add-vect v1 v2)
  (make-vect (+ (xcor-vect v1) (xcor-vect v2))
             (+ (ycor-vect v1) (ycor-vect v2))))

(define (sub-vect v1 v2)
  (make-vect (- (xcor-vect v1) (xcor-vect v2))
             (- (ycor-vect v1) (ycor-vect v2))))

(define (scale-vect s v)
  (make-vect (* s (xcor-vect v))
             (* s (ycor-vect v))))

; test
(define v1 (make-vect 4 3))
(define v2 (make-vect 2 1))
(xcor-vect v1)
(ycor-vect v1)
(add-vect v1 v2)
(sub-vect v1 v2)
(scale-vect 3 v1)