Code Review

Compare your solutions

    #| Для этого упражнения нет проверок.
Любое решение будет считаться успешным ответом. |#
(define (segments->painter segment-list)
  (lambda (frame)
    (for-each
             (lambda (segment)
               (draw-line
                         ((frame-coord-map frame) (start-segment segment))
                ((frame-coord-map frame) (end-segment segment))))
     segment-list)))

(define (frame-painter)
  (segments->painter
   (list (make-segment (make-vect 0 0) (make-vect 1 0))  ; Нижняя сторона
         (make-segment (make-vect 1 0) (make-vect 1 1))  ; Правая сторона
         (make-segment (make-vect 1 1) (make-vect 0 1))  ; Верхняя сторона
         (make-segment (make-vect 0 1) (make-vect 0 0))))) ; Левая сторона

(define (x-painter)
  (segments->painter
   (list (make-segment (make-vect 0 0) (make-vect 1 1))  ; Одна диагональ
         (make-segment (make-vect 1 0) (make-vect 0 1))))) ; Вторая диагональ

(define (diamond-painter)
  (segments->painter
   (list (make-segment (make-vect 0.5 0) (make-vect 1 0.5))  ; Нижний левый -> Правый центр
         (make-segment (make-vect 1 0.5) (make-vect 0.5 1))  ; Правый центр -> Верхний центр
         (make-segment (make-vect 0.5 1) (make-vect 0 0.5))  ; Верхний центр -> Левый центр
         (make-segment (make-vect 0 0.5) (make-vect 0.5 0))))) ; Левый центр -> Нижний центр

(define (wave-painter)
  (segments->painter
   (list (make-segment (make-vect 0 0.5) (make-vect 0.2 0.7))
         (make-segment (make-vect 0.2 0.7) (make-vect 0.4 0.3))
         (make-segment (make-vect 0.4 0.3) (make-vect 0.6 0.7))
         (make-segment (make-vect 0.6 0.7) (make-vect 0.8 0.3))
         (make-segment (make-vect 0.8 0.3) (make-vect 1 0.5)))))