packages feed

THEff-0.1.0.1: samples/SampleCatch.hs

{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TemplateHaskell #-}
module Main where

import Control.THEff
import Control.THEff.Catch

mkEff "MyCatch"     ''Catch     ''Float       ''NoEff

foo:: Float -> Eff (MyCatch m String) String
foo x = do
    throwCtchIf  x (==0)
    return $ "1/" ++ show x ++ " = " ++ (show $ 1 / x)
    
hndlr :: Float -> String
hndlr x = "Error : x=" ++ show x

main:: IO ()
main = do
    print $ runMyCatch hndlr $ foo 4
    print $ runMyCatch hndlr $ foo 0