width := 80 height := 24 maxiter := 100 V+ := { a1::b1 a2::b2 -> (+ a1 a2)::(+ b1 b2) } V* := { a1::b1 a2::b2 -> (- (* a1 a2) (* b1 b2))::(+ (* a1 b2) (* b1 a2)) } Vsquared := { x -> V* x x } Vsquared-abs := { a::b -> + (* a a) (* b b) } mandel := { 0 _ _ -> true _ _ _?(has Vsquared-abs > 4) -> false n c z -> mandel (-- n) c (V+ (Vsquared z) c) } mindim := if (< width height) {width} {height} scale := / 2 mindim iterdim := { dim body -> half := / dim 2 for (- half) half { x -> body (* scale x) } } iterdim height { b -> line := "" iterdim width { a -> line = & line (if (mandel maxiter a::b 0::0) {"#"} {" "}) } gc 'collect print line }