Prelude> :r [1 of 1] Compiling FME ( /home/nick/vertigomedia/Union-Haskell/playground-haskell/free-transactions/src/FME.hs, interpreted ) /home/nick/vertigomedia/Union-Haskell/playground-haskell/free-transactions/src/FME.hs:151:8: Couldn't match type ‘m1’ with ‘Either Err’ ‘m1’ is a rigid type variable bound by a pattern with constructor InputE :: forall next a (m :: * -> *). (Read a, MonadError Err m) => (m a -> next) -> RetryF next, in an equation for ‘runIO’ at /home/nick/vertigomedia/Union-Haskell/playground-haskell/free-transactions/src/FME.hs:148:8 Expected type: m1 a1 Actual type: Either Err a1 Relevant bindings include next :: m1 a1 -> m a (bound at /home/nick/vertigomedia/Union-Haskell/playground-haskell/free-transactions/src/FME.hs:148:15) In the first argument of ‘next’, namely ‘eth’ In a stmt of a 'do' block: next eth Failed, modules loaded: none.