(define d (/ (sqrt 3) 3))

(define monkey-step
  (lambda (side)
    (adjoin
     (bend -60)
     (graphic-color (graphic-mirror side) blue)
     (graphic-color (graphic-reverse side) red)
     (bend 60)
     (graphic-color side blue)
     (bend 60)
     (graphic-color (graphic-reverse side) red)
     (bend 150)
     (graphic-color (graphic-scale (graphic-reverse side) d) red)
     (graphic-color (graphic-scale (graphic-mirror side) d) blue)
     (bend -60)
     (graphic-color (graphic-scale (graphic-mirror (graphic-reverse side)) d) red)
     (bend -60)
     (graphic-color (graphic-scale (graphic-mirror (graphic-reverse side)) d) red)
     (graphic-color (graphic-scale side d) blue)
     (bend -90)
     (graphic-color (graphic-mirror (graphic-reverse side)) red)
     (graphic-color side blue))))

(define monkey-tree
  (lambda (n len)
    (if (= n 0)
	(straight len)
	(monkey-step (monkey-tree (- n 1) len)))))

(define monkey
  (lambda (n len)
    (monkey-tree n (/ len (expt 3 (- n 1))))))

> (monkey 1 110)
#<struct:graphic>
>

> (monkey 2 110)
#<struct:graphic>
>


> (monkey 3 110)
#<struct:graphic>
>