]> git.rkrishnan.org Git - sicp.git/blob - src/sicp/ex2_47.clj
solutions to 4.35, 4.36 and 4.37
[sicp.git] / src / sicp / ex2_47.clj
1 (ns sicp.ex2_47
2   (:use [clojure.test]))
3
4 ;; first approach
5 (defn make-frame [origin edge1 edge2]
6   (list origin edge1 edge2))
7
8 ;; second approach
9 (defn make-frame [origin]
10   (cons origin (cons edge1 (list edge2))))
11
12 ;; for both of them the following selectors will work
13 (defn origin-frame [frame]
14   (first frame))
15
16 (defn edge1-frame [frame]
17   (second frame))
18
19 (defn edge2-frame [frame]
20   (first (rest (rest frame))))
21