{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TypeFamilies     #-}

module Data.Result
  ( fromEither
  -- * Reexports
  , module Data.Result.Types
  ) where

import           Data.Result.Types
import           Data.WorldPeace

import           Control.Monad.Raise

-- | Upgrade from an 'Either' to a 'Result'
fromEither :: Subset err (OpenUnion errs) => Either err val -> Result errs val
fromEither (Right val) = Ok val
fromEither (Left  err) = Err (include err)