A Simple Turtle Graphics Implementation in Clojure
Turtle graphics is a popular way of introducing programming to kids. It was part of the original Logo programming language developed by Wally Feurzig and Seymour Papert in 1966. Turtle, originally a robotic creature moves on the floor. It takes commands relative to its own position, such as "move forward 10 steps" and "turn left 90 degrees". Turtle also has a pen which may be lowered to the floor so that a trace is left of where it has traveled.
(defn fib [turtle depth] (forward turtle 30) (if (> depth 2) (do (left turtle 15) (fib turtle (- depth 1)) (right turtle 30) (fib turtle (- depth 2)) (left turtle 15))) (back turtle 30)) (let [turtle (turtle 400 400)] (pen-up turtle) (go turtle 0 -100) (pen-down turtle) (fib turtle 10) (show turtle))

(defn fern [turtle size] (if (> size 4) (do (forward turtle (/ size 25)) (left turtle 90) (fern turtle (* size 0.3)) (right turtle 90) (right turtle 90) (fern turtle (* size 0.3)) (left turtle 90) (fern turtle (* size 0.85)) (back turtle (/ size 25))))) (let [turtle (turtle 400 400)] (pen-up turtle) (go turtle 0 -200) (pen-down turtle) (pen-color turtle Color/green) (fern turtle 1500) (write turtle "test.png"))
