This is my Clojure solution to Chapter 2, Exercise 2:
(ns sicp.ch2.ex02)
(defn make-point
[x y]
[x y])
(def point-x first)
(def point-y second)
(defn- point-print
[pt]
(println (str "(" (point-x pt) ", " (point-y pt) ")")))
(defn make-seg
[start-pt end-pt]
[start-pt end-pt])
(def seg-start first)
(def seg-end second)
(defn- seg-midpoint
[seg]
(let [s (seg-start seg)
e (seg-end seg)]
(make-point (/ (+ (point-x s) (point-x e)) 2)
(/ (+ (point-y s) (point-y e)) 2))))
(comment
(def seg (make-seg (make-point 1 0) (make-point 5 42)))
(point-print (seg-midpoint seg)) ; => (3, 21)
)
No comments:
Post a Comment