1(define koch
2  (let ((s (/ (sqrt 3) 2 3)))
3    (lambda (res depth)
4      (letrec
5	  ((iter
6	    (lambda (x1 y1 x2 y2 d)
7	      (if (zero? d)
8		  (draw-line x2 y2)
9		  (let* ((dx (- x2 x1))
10			 (dy (- y2 y1))
11			 (thx (+ x1 (/ dx 3)))
12			 (thy (+ y1 (/ dy 3)))
13			 (thx2 (+ x1 (* 2 (/ dx 3))))
14			 (thy2 (+ y1 (* 2 (/ dy 3))))
15			 (mx (/ (+ x1 x2) 2))
16			 (my (/ (+ y1 y2) 2))
17			 (midx (+ mx (* (- dy) s)))
18			 (midy (+ my (* dx s))))
19		    (iter x1 y1 thx thy (- d 1))
20		    (iter thx thy midx midy (- d 1))
21		    (iter midx midy thx2 thy2 (- d 1))
22		    (iter thx2 thy2 x2 y2 (- d 1)))))))
23	(draw-move 0 0)
24	(draw-color 0 255 0)
25	(iter 0 0 res 0 depth)))))
26
27(koch 200 4)
28