hpaste

recent | annotate | new


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")
-- return $ Monkey { name = "Dobbin" }


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")
-- return $ Monkey { name = "Dobbin" }