diff --git a/result.cabal b/result.cabal
--- a/result.cabal
+++ b/result.cabal
@@ -1,5 +1,5 @@
 name:                result
-version:             0.2.4.0
+version:             0.2.5.0
 synopsis:            Encode success or at least one error
 homepage:            https://github.com/srijs/haskell-result
 license:             MIT
diff --git a/src/Control/Monad/Trans/Result.hs b/src/Control/Monad/Trans/Result.hs
--- a/src/Control/Monad/Trans/Result.hs
+++ b/src/Control/Monad/Trans/Result.hs
@@ -4,12 +4,14 @@
   ( ResultT, runResultT, hoist
   , raiseT, raiseAllT
   , accumulateT
+  , fromExceptT
   ) where
 
 
 import Control.Applicative (liftA2)
 import Control.Monad (join)
 import Control.Monad.Trans.Class
+import Control.Monad.Trans.Except
 import qualified Control.Monad.State.Class as State
 
 import Data.Functor.Identity
@@ -65,6 +67,11 @@
 accumulateT :: (Traversable t , Applicative f) => t (ResultT e f a) -> ResultT e f (t a)
 accumulateT results =
   ResultT (accumulate <$> traverse runResultT results)
+
+
+fromExceptT :: Functor f => ExceptT e f a -> ResultT e f a
+fromExceptT excT =
+  ResultT (fromEither <$> runExceptT excT)
 
 
 instance State.MonadState s m => State.MonadState s (ResultT e m) where
diff --git a/src/Data/Result.hs b/src/Data/Result.hs
--- a/src/Data/Result.hs
+++ b/src/Data/Result.hs
@@ -5,6 +5,7 @@
   , get, errors
   , raise, raiseAll
   , accumulate
+  , fromEither
   ) where
 
 
@@ -96,6 +97,15 @@
       NonEmpty.toList es
     Right _ ->
       []
+
+
+fromEither :: Either e a -> Result e a
+fromEither eith =
+  Result $ case eith of
+    Left e ->
+      Left (e NonEmpty.:| [])
+    Right a ->
+      Right a
 
 
 data AccumulatingResult e a = AccRes { getResult :: Result e a }
