import Complex import System type C = Complex(Double) mandelbrot_eval::Int->C->Int mandelbrot_eval max_iter c = length $ (takeWhile (\z -> (magnitude z) < 2)) $ (take max_iter) $ (iterate (\z -> z*z+c) (0:+0) ) half_width_pixels::Int half_width_pixels = 400 scaling::Double->Int->Double scaling width = (* (width /(fromIntegral half_width_pixels))) . fromIntegral range::Double->[Double] range width= map (scaling width) [-half_width_pixels .. half_width_pixels] iterations::Int iterations = 200 main::IO () main = do{ let {s = show (2*half_width_pixels+1)}; putStrLn ("P3\n"++s++" "++s++"\n"++"255"); args <- getArgs; let {side = exp(-(read (head args)))}; putStr $ unlines $ map show $ concatMap ( (\i -> [i,i,(i+55)]) . (mandelbrot_eval iterations) . (+ center) ) $ [x:+y | x<-(range side), y<-(range side)] } center::C center = 0.4245127190 :+ 0.2075302281 -- Fenway House is looking for new residents!