diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # Revision history for either-result
 
+## 0.1.2.0
+
+*2020.07.31*
+
+- Add `toMonadFail`.
+
 ## 0.1.1.0
 
 *2020.07.28*
diff --git a/either-result.cabal b/either-result.cabal
--- a/either-result.cabal
+++ b/either-result.cabal
@@ -1,7 +1,7 @@
 cabal-version: 2.2
 
 name: either-result
-version: 0.1.1.0
+version: 0.1.2.0
 synopsis: ‘Result a’ is a wrapper of ‘Either String a’.
 description: ‘Result a’ is a wrapper of ‘Either String a’, but ‘Result’ is an instance of ‘MonadFail’.
 homepage: https://github.com/kakkun61/either-result
diff --git a/src/Data/Either/Result.hs b/src/Data/Either/Result.hs
--- a/src/Data/Either/Result.hs
+++ b/src/Data/Either/Result.hs
@@ -18,9 +18,12 @@
   , fromEither
   , toEither
   , fromSuccess
+  , toMonadFail
   ) where
 
-import           Prelude             hiding (either)
+#if !MIN_VERSION_base(4,13,0)
+import           Prelude             hiding (fail)
+#endif
 
 import           Control.Applicative (Alternative (empty, (<|>)))
 import           Control.Monad       (MonadPlus (mplus, mzero))
@@ -110,6 +113,7 @@
 result :: (String -> b) -> (a -> b) -> Result a -> b
 result f _ (Error e)   = f e
 result _ g (Success a) = g a
+{-# INLINE result #-}
 
 -- | Convert @'Either' 'String' a@ to @'Result' a@.
 fromEither :: Either String a -> Result a
@@ -125,3 +129,10 @@
 fromSuccess :: a -> Result a -> a
 fromSuccess _ (Success a) = a
 fromSuccess a _           = a
+{-# INLINE fromSuccess #-}
+
+-- | Convert @'Result' a@ to @'MonadFail' m => m a@.
+toMonadFail :: MonadFail m => Result a -> m a
+toMonadFail (Success a) = pure a
+toMonadFail (Error e)   = fail e
+{-# INLINE toMonadFail #-}
