module Resolve.Log where

import Resolve.Types
import Control.Exception

log :: (Show a, Show b) => (String -> IO()) -> (String -> IO()) -> Resolve a b -> Resolve a b
log error info r a = do
  catch 
    (do
        b <- r a
        info $ show a ++ "->" ++ show b
        return b
    )
    (\e -> do
        error $ show a ++ "->" ++ show (e :: SomeException)
        throw e
    )