open monad io loop m n | n < m = do loop' n 0 putStrLn "" loop m (n + 1) | else = do return () where loop' m n | n <= m = do putStr "*" loop' m (n + 1) | else = do return () _ = loop 10 1 ::: IO