examples/ex-61.rkt
#lang racket
(require (planet wcy/mpost-wrapper))
(provide main)

(define (main)
  (define (f z1 zn)
    (if (null? zn)
        z1
        (let ((x (f2 z1 zn)))
          (f (car x) (cdr x)))))
  (define (f2 z1 zn)
    (if (null? (cdr zn))
        (list (mediation 1/2 z1 (car zn)))
        (cons (mediation 1/2 z1 (car zn))
              (f2 (car zn) (cdr zn)))))
  (let* ((u '1cm)
         (A (point 0 0))
         (B (point (op* -1 u) (op* 2 u)))
         (C (point (op* 3  u) (op* 3 u)))
         (D (point (op* 2  u) 0)))
    (for ((A (in-list (list A B C D))))
         (draw A #:withpen (scale '4bp 'pencircle)))
    (draw (path A ".." " controls " B " and " C ".." D))
    (draw (f A (list B C D))
          #:withpen (scale '4bp 'pencircle))))