{-# LANGUAGE DataKinds #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE PatternSynonyms #-}
module Data.Result.Types
( Result
, pattern Ok
, pattern Err
) where
import Data.Kind
import Data.WorldPeace
type Result (errs :: [Type]) = Either (OpenUnion errs)
pattern Ok :: val -> Either (OpenUnion err) val
pattern $bOk :: val -> Either (OpenUnion err) val
$mOk :: forall r val (err :: [*]).
Either (OpenUnion err) val -> (val -> r) -> (Void# -> r) -> r
Ok val = Right val
pattern Err :: OpenUnion errs -> Either (OpenUnion errs) b
pattern $bErr :: OpenUnion errs -> Either (OpenUnion errs) b
$mErr :: forall r (errs :: [*]) b.
Either (OpenUnion errs) b
-> (OpenUnion errs -> r) -> (Void# -> r) -> r
Err errs = Left errs