open monad io number string :::IO take_numbers 0 xs = do return $ iter xs where f x = sqrt (toSingle x) + 5.0 * (x ** 3.0) p x = x < 400.0 iter [] = return () iter (x::xs) | p res = do putStrLn (format "f({0}) = {1}" x res) iter xs | else = do putStrLn (format "f({0}) :: Overflow" x) iter xs where res = f x take_numbers n xs = do x <- readAny take_numbers (n - 1) (x::xs) do putStrLn "Please enter 11 numbers:" take_numbers 11 []