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.1.0
+
+*2020.07.28*
+
+- Expose a value constructor and a field for coercion.
+
 ## 0.1.0.0
 
 *2020.07.26*
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.0.0
+version: 0.1.1.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
@@ -49,3 +49,16 @@
                -rtsopts
                -with-rtsopts=-N
   build-tool-depends: doctest-discover:doctest-discover
+
+test-suite spec
+  import: common
+  type: exitcode-stdio-1.0
+  main-is: Spec.hs
+  hs-source-dirs: spec
+  other-modules: Data.Either.ResultSpec
+  build-depends: either-result,
+                 hspec
+  ghc-options: -threaded
+               -rtsopts
+               -with-rtsopts=-N
+  build-tool-depends: hspec-discover:hspec-discover
diff --git a/spec/Data/Either/ResultSpec.hs b/spec/Data/Either/ResultSpec.hs
new file mode 100644
--- /dev/null
+++ b/spec/Data/Either/ResultSpec.hs
@@ -0,0 +1,16 @@
+module Data.Either.ResultSpec (spec) where
+
+import Data.Either.Result
+
+import Test.Hspec
+
+import Data.Coerce
+
+spec :: Spec
+spec = do
+  describe "coercible" $ do
+    it "Result Int -> Either String Int" $ do
+      let
+        actual = coerce $ Success (0 :: Int)
+        expected = Right 0 :: Either String Int
+      actual `shouldBe` expected
diff --git a/spec/Spec.hs b/spec/Spec.hs
new file mode 100644
--- /dev/null
+++ b/spec/Spec.hs
@@ -0,0 +1,1 @@
+{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
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
@@ -11,7 +11,7 @@
 -- | @'Result' a@ is a wrapper of @'Either' 'String' a@, but 'Result' is an instance of 'MonadFail'.
 -- A discussion about 'MonadFail' of 'Either' is <https://gitlab.haskell.org/ghc/ghc/-/issues/12160>.
 module Data.Either.Result
-  ( type Result
+  ( type Result (Result, runResult)
   , pattern Error
   , pattern Success
   , result
@@ -36,7 +36,7 @@
 
 -- | @'Result' a@ is a wrapper of @'Either' 'String' a@.
 newtype Result a =
-  Result { either :: Either String a }
+  Result { runResult :: Either String a }
   deriving stock (Eq, Ord, Generic, Functor, Foldable, Traversable)
   deriving newtype (Semigroup, Applicative, Monad)
 
@@ -116,9 +116,9 @@
 fromEither = Result
 {-# INLINE fromEither #-}
 
--- | Convert @'Either' 'String' a@ from @'Result' a@.
+-- | Convert @'Result' a@ to @'Either' 'String' a@.
 toEither :: Result a -> Either String a
-toEither = either
+toEither = runResult
 {-# INLINE toEither #-}
 
 -- | Convert @'Result' a@ to @a@ with a default value.
