@@ -7,7 +7,6 @@
77{-# LANGUAGE LambdaCase #-}
88module Main where
99
10−import Data.Functor.Identity
1110import Data.Monoid
1211import Control.Monad
1312import Control.Ether.Tagged
@@ -16,7 +15,6 @@ import Control.Ether.Wrapped
1615import Control.Monad.Ether.Reader
1716import Control.Monad.Ether.State
1817import Control.Monad.Ether.Writer
19−import Control.Monad.Ether.Implicit.Except.TH
2018import qualified Control.Monad.Ether.Implicit.Reader as I
2119import qualified Control.Monad.Ether.Implicit.State as I
2220import qualified Control.Monad.Ether.Implicit.Except as I
@@ -167,24 +165,14 @@ exceptCore a b = do
167165 T.when (d < 0) (I.throw (NegativeLog d))
168166 return (log d)
169167
170−try0 :: m a -> m a
171−try0 = $(try 0)
172−
173−try1 :: Functor m => I.ExceptT e m a -> (e -> a) -> m a
174−try1 = $(try 1)
175−
176−try2 :: Functor m => I.ExceptT e1 (I.ExceptT e2 m) a -> (e1 -> a) -> (e2 -> a) -> m a
177−try2 = $(try 2)
178−
179−try3 :: Functor m => I.ExceptT e1 (I.ExceptT e2 (I.ExceptT e3 m)) a -> (e1 -> a) -> (e2 -> a) -> (e3 -> a) -> m a
180−try3 = $(try 3)
168+(&) :: a -> (a -> c) -> c
169+(&) = flip ($)
181170
182171exceptCore' :: Double -> Double -> String
183−exceptCore' a b = runIdentity $ do
184− $(try 2)
185− (liftM show (exceptCore a b))
186− (\(NegativeLog (x::Double)) -> "nl: " ++ show x)
187− (\DivideByZero -> "dz")
172+exceptCore' a b = do
173+ liftM show (exceptCore a b)
174+ &I.handleT (\(NegativeLog (x::Double)) -> "nl: " ++ show x)
175+ &I.handle (\DivideByZero -> "dz")
188176
189177summatorCore
190178 :: ( Num a