Sunday, June 05, 2022

SICP in Clojure: Chapter 2, Exercise 2

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: