module Monkey where
import Control.Exception
import Prelude hiding catch
data Monkey = Monkey { name :: String }
main = do
m <- monkey
catch (putStrLn $ name m) (\a -> putStrLn a)
renameMonkey :: IO Monkey
renameMonkey = do
m <- monkey
return $ m { name = "Marvin" }
monkey :: IO Monkey
monkey = throwIO (IOException "Could not catch monkey")
module Main where
import Control.Exception
import Prelude hiding (catch)
data Monkey = Monkey { name :: String }
main = do
m <- monkey
catch (putStrLn $ name m) (\a -> putStrLn "broken")
renameMonkey :: IO Monkey
renameMonkey = do
m <- monkey
return $ m { name = "Marvin" }
monkey :: IO Monkey
monkey = throwIO (ErrorCall "Could not catch monkey")
module Main where
import Control.Exception
import Prelude hiding (catch)
data Monkey = Monkey { name :: String }
main = catch (monkey >>= \m -> putStrLn $ name m) (\a -> putStrLn "broken")
renameMonkey :: IO Monkey
renameMonkey = do
m <- monkey
return $ m { name = "Marvin" }
monkey :: IO Monkey
monkey = throwIO (ErrorCall "Could not catch monkey")
module Main where
import Control.Exception
import Prelude hiding (catch)
data Monkey = Monkey { name :: String }
main = catch (monkey >>= \m -> putStrLn $ name $ renameMonkey m) (\a -> putStrLn "broken")
renameMonkey :: Monkey -> Monkey
renameMonkey m = m { name = "Marvin" }
monkey :: IO Monkey
monkey = throwIO (ErrorCall "Could not catch monkey")
module Main where
import Control.Exception
import Prelude hiding (catch)
data Monkey = Monkey { name :: String }
main = catch (monkey >>= \m -> putStrLn $ name $ renameMonkey m) (\(ErrorCall msg) -> putStrLn msg)
renameMonkey :: Monkey -> Monkey
renameMonkey m = m { name = "Marvin" }
monkey :: IO Monkey
monkey = throwIO (ErrorCall "Could not catch monkey")