Код Ревью
Сравни свои решения
#| BEGIN (Write your solution here) |#
; -- rectangle --
(define (make-rectangle top-left-point w h)
(cons top-left-point (make-dimensions2d w h)))
(define (rectangle-top-left-point r)
(car r))
(define (rectangle-dimensions r)
(cdr r))
(define (rectangle-width r)
(w-dimensions2d (rectangle-dimensions r)))
(define (rectangle-height r)
(h-dimensions2d (rectangle-dimensions r)))
(define (rectangle-top-right-point r)
(let ((trx (x-point (rectangle-top-left-point r)))
(try (y-point (rectangle-top-left-point r)))
(w (rectangle-width r)))
(make-point (+ trx w) try)))
(define (rectangle-bottom-left-point r)
(let ((trx (x-point (rectangle-top-left-point r)))
(try (y-point (rectangle-top-left-point r)))
(h (rectangle-height r)))
(make-point trx (+ try h))))
(define (rectangle-bottom-right-point r)
(let ((trx (x-point (rectangle-top-left-point r)))
(try (y-point (rectangle-top-left-point r)))
(w (rectangle-width r))
(h (rectangle-height r)))
(make-point (+ trx w) (+ try h))))
(define (rectangle-square r)
(let ((w (rectangle-width r))
(h (rectangle-height r)))
(* w h)))
(define (rectangle-perimeter r)
(let ((w (rectangle-width r))
(h (rectangle-height r)))
(+ (* w 2) (* h 2))))
; -- dimensions2d --
(define (make-dimensions2d w h)
(cons w h))
(define (w-dimensions2d d)
(car d))
(define (h-dimensions2d d)
(cdr d))
; -- point --
(define (x-point p)
(car p))
(define (y-point p)
(cdr p))
#| END |#