@@ -7,7 +7,6 @@
7{-# LANGUAGE LambdaCase #-}
7{-# LANGUAGE LambdaCase #-}
8module Main where
8module Main where
10−import Data.Functor.Identity
11import Data.Monoid
10import Data.Monoid
12import Control.Monad
11import Control.Monad
13import Control.Ether.Tagged
12import Control.Ether.Tagged
@@ -16,7 +15,6 @@ import Control.Ether.Wrapped
16import Control.Monad.Ether.Reader
15import Control.Monad.Ether.Reader
17import Control.Monad.Ether.State
16import Control.Monad.Ether.State
18import Control.Monad.Ether.Writer
17import Control.Monad.Ether.Writer
19−import Control.Monad.Ether.Implicit.Except.TH
20import qualified Control.Monad.Ether.Implicit.Reader as I
18import qualified Control.Monad.Ether.Implicit.Reader as I
21import qualified Control.Monad.Ether.Implicit.State as I
19import qualified Control.Monad.Ether.Implicit.State as I
22import qualified Control.Monad.Ether.Implicit.Except as I
20import qualified Control.Monad.Ether.Implicit.Except as I
@@ -167,24 +165,14 @@ exceptCore a b = do
167 T.when (d < 0) (I.throw (NegativeLog d))
165 T.when (d < 0) (I.throw (NegativeLog d))
168 return (log d)
166 return (log d)
170−try0 :: m a -> m a
168+(&) :: a -> (a -> c) -> c
171−try0 = $(try 0)
169+(&) = flip ($)
173−try1 :: Functor m => I.ExceptT e m a -> (e -> a) -> m a
176−try2 :: Functor m => I.ExceptT e1 (I.ExceptT e2 m) a -> (e1 -> a) -> (e2 -> a) -> m a
179−try3 :: Functor m => I.ExceptT e1 (I.ExceptT e2 (I.ExceptT e3 m)) a -> (e1 -> a) -> (e2 -> a) -> (e3 -> a) -> m a
182exceptCore' :: Double -> Double -> String
171exceptCore' :: Double -> Double -> String
183−exceptCore' a b = runIdentity $ do
172+exceptCore' a b = do
185− (liftM show (exceptCore a b))
173+ liftM show (exceptCore a b)
186− (\(NegativeLog (x::Double)) -> "nl: " ++ show x)
174+ &I.handleT (\(NegativeLog (x::Double)) -> "nl: " ++ show x)
187− (\DivideByZero -> "dz")
175+ &I.handle (\DivideByZero -> "dz")
189summatorCore
177summatorCore
190 :: ( Num a
178 :: ( Num a