]> git.rkrishnan.org Git - sicp.git/blob - src/sicp/ex2_46.clj
solutions to 4.38, 4.39 and 4.40
[sicp.git] / src / sicp / ex2_46.clj
1 (ns sicp.ex2_46
2   (:use [clojure.test]))
3
4 (defn make-vect [x y]
5   (list x y))
6
7 (defn xcor-vect [v]
8   (first v))
9
10 (defn ycor-vect [v]
11   (second v))
12
13 (defn add-vect [v1 v2]
14   (make-vect (+ (xcor-vect v1)
15                 (xcor-vect v2))
16              (+ (ycor-vect v1)
17                 (ycor-vect v2))))
18
19 (defn sub-vect [v1 v2]
20   (make-vect (- (xcor-vect v1)
21                 (xcor-vect v2))
22              (- (ycor-vect v1)
23                 (ycor-vect v2))))
24
25 (defn scale-vect [v s]
26   (make-vect (* s (xcor-vect v))
27              (* s (ycor-vect v))))
28
29 (deftest test-add-vectors
30   (let [v1 (make-vect 1 1)
31         v2 (make-vect 2 2)]
32     (is (= (add-vect v1 v2) (make-vect 3 3)))))