summaryrefslogblamecommitdiffstats
path: root/net/ricketyspace/sicp/two/two.scm
blob: 948ec391715fa2b91467fe952fb04bfead9a3b73 (plain) (tree)










































                                                       
;;;; Under Creative Commons Attribution-ShareAlike 4.0
;;;; International. See
;;;; <https://creativecommons.org/licenses/by-sa/4.0/>.

(define-module (net ricketyspace sicp two two)
  #:export (make-point
            x-point
            y-point
            make-segment
            start-segment
            end-segment
            midpoint-segment))

;;; Util
(define (avg a b)
  (/ (+ a b) 2.0))


;;; Point
(define (make-point x y)
  (cons x y))

(define (x-point point)
  (car point))

(define (y-point point)
  (cdr point))

;;; Segment
(define (make-segment start end)
  (list start end))

(define (start-segment segment)
  (car segment))

(define (end-segment segment)
  (cadr segment))

(define (midpoint-segment segment)
  (make-point (avg (x-point (start-segment segment))
                   (x-point (end-segment segment)))
              (avg (y-point (start-segment segment))
                   (y-point (end-segment segment)))))