Следуя этой части книги, я решил draw-line
сгенерировать код JavaScript, который будет рисоваться на холсте HTML.
(define (draw-line v1 v2)
(newline)
(display "ctx.beginPath();")
(display (string-append "ctx.moveTo(" (number->string (xcor-vect v1)) "," (number->string (ycor-vect v1)) ");"))
(display (string-append "ctx.lineTo(" (number->string (xcor-vect v2)) "," (number->string (ycor-vect v2)) ");"))
(display "ctx.stroke();"))
В конце концов, как именно draw-line
реализован, не важно для процедур, которые его используют, и нам просто нужен способ визуализации результатов.Единственным недостатком является то, что HTML-координаты холста начинаются в верхнем левом углу, а не в левом нижнем углу, но это также может быть решено путем корректировки немного генерируемого кода.
Вот полный код схемы https://github.com/antivanov/scip-exercises/blob/master/scheme/ch2/2.48.49.scm https://github.com/antivanov/scip-exercises/blob/master/scheme/ch2/2.52.scm
Следуя тому же подходу, я смог представить другие примеры / упражнения из этой главы.