plutus-tx-1.0.0.0: Libraries for Plutus Tx and its prelude
Safe Haskell None
Language Haskell2010

PlutusTx.Either

Synopsis

Documentation

data Either a b Source #

The Either type represents values with two possibilities: a value of type Either a b is either Left a or Right b .

The Either type is sometimes used to represent a value which is either correct or an error; by convention, the Left constructor is used to hold an error value and the Right constructor is used to hold a correct value (mnemonic: "right" also means "correct").

Examples

Expand

The type Either String Int is the type of values which can be either a String or an Int . The Left constructor can be used only on String s, and the Right constructor can be used only on Int s:

>>> let s = Left "foo" :: Either String Int
>>> s
Left "foo"
>>> let n = Right 3 :: Either String Int
>>> n
Right 3
>>> :type s
s :: Either String Int
>>> :type n
n :: Either String Int

The fmap from our Functor instance will ignore Left values, but will apply the supplied function to values contained in a Right :

>>> let s = Left "foo" :: Either String Int
>>> let n = Right 3 :: Either String Int
>>> fmap (*2) s
Left "foo"
>>> fmap (*2) n
Right 6

The Monad instance for Either allows us to chain together multiple actions which may fail, and fail overall if any of the individual steps failed. First we'll write a function that can either parse an Int from a Char , or fail.

>>> import Data.Char ( digitToInt, isDigit )
>>> :{
    let parseEither :: Char -> Either String Int
        parseEither c
          | isDigit c = Right (digitToInt c)
          | otherwise = Left "parse error"
>>> :}

The following should work, since both '1' and '2' can be parsed as Int s.

>>> :{
    let parseMultiple :: Either String Int
        parseMultiple = do
          x <- parseEither '1'
          y <- parseEither '2'
          return (x + y)
>>> :}
>>> parseMultiple
Right 3

But the following should fail overall, since the first operation where we attempt to parse 'm' as an Int will fail:

>>> :{
    let parseMultiple :: Either String Int
        parseMultiple = do
          x <- parseEither 'm'
          y <- parseEither '2'
          return (x + y)
>>> :}
>>> parseMultiple
Left "parse error"

Constructors

Left a
Right b

Instances

Instances details
ToJSON2 Either
Instance details

Defined in Data.Aeson.Types.ToJSON

Methods

liftToJSON2 :: (a -> Value ) -> ([a] -> Value ) -> (b -> Value ) -> ([b] -> Value ) -> Either a b -> Value Source #

liftToJSONList2 :: (a -> Value ) -> ([a] -> Value ) -> (b -> Value ) -> ([b] -> Value ) -> [ Either a b] -> Value Source #

liftToEncoding2 :: (a -> Encoding ) -> ([a] -> Encoding ) -> (b -> Encoding ) -> ([b] -> Encoding ) -> Either a b -> Encoding Source #

liftToEncodingList2 :: (a -> Encoding ) -> ([a] -> Encoding ) -> (b -> Encoding ) -> ([b] -> Encoding ) -> [ Either a b] -> Encoding Source #

FromJSON2 Either
Instance details

Defined in Data.Aeson.Types.FromJSON

Bifunctor Either

Since: base-4.8.0.0

Instance details

Defined in Data.Bifunctor

Methods

bimap :: (a -> b) -> (c -> d) -> Either a c -> Either b d Source #

first :: (a -> b) -> Either a c -> Either b c Source #

second :: (b -> c) -> Either a b -> Either a c Source #

Bifoldable Either

Since: base-4.10.0.0

Instance details

Defined in Data.Bifoldable

Methods

bifold :: Monoid m => Either m m -> m Source #

bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> Either a b -> m Source #

bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> Either a b -> c Source #

bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> Either a b -> c Source #

Eq2 Either

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Classes

Methods

liftEq2 :: (a -> b -> Bool ) -> (c -> d -> Bool ) -> Either a c -> Either b d -> Bool Source #

Ord2 Either

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Classes

Methods

liftCompare2 :: (a -> b -> Ordering ) -> (c -> d -> Ordering ) -> Either a c -> Either b d -> Ordering Source #

Read2 Either

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Classes

Show2 Either

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Classes

Methods

liftShowsPrec2 :: ( Int -> a -> ShowS ) -> ([a] -> ShowS ) -> ( Int -> b -> ShowS ) -> ([b] -> ShowS ) -> Int -> Either a b -> ShowS Source #

liftShowList2 :: ( Int -> a -> ShowS ) -> ([a] -> ShowS ) -> ( Int -> b -> ShowS ) -> ([b] -> ShowS ) -> [ Either a b] -> ShowS Source #

NFData2 Either

Since: deepseq-1.4.3.0

Instance details

Defined in Control.DeepSeq

Methods

liftRnf2 :: (a -> ()) -> (b -> ()) -> Either a b -> () Source #

Hashable2 Either
Instance details

Defined in Data.Hashable.Class

Bitraversable1 Either
Instance details

Defined in Data.Semigroup.Traversable.Class

Methods

bitraverse1 :: Apply f => (a -> f b) -> (c -> f d) -> Either a c -> f ( Either b d) Source #

bisequence1 :: Apply f => Either (f a) (f b) -> f ( Either a b) Source #

MonadError e ( Either e)
Instance details

Defined in Control.Monad.Error.Class

( Lift a, Lift b) => Lift ( Either a b :: Type )
Instance details

Defined in Language.Haskell.TH.Syntax

( Typeable DefaultUni a, Typeable DefaultUni b, Lift DefaultUni a, Lift DefaultUni b) => Lift DefaultUni ( Either a b) Source #
Instance details

Defined in PlutusTx.Lift.Instances

Monad ( Either e)

Since: base-4.4.0.0

Instance details

Defined in Data.Either

Functor ( Either a)

Since: base-3.0

Instance details

Defined in Data.Either

Methods

fmap :: (a0 -> b) -> Either a a0 -> Either a b Source #

(<$) :: a0 -> Either a b -> Either a a0 Source #

MonadFix ( Either e)

Since: base-4.3.0.0

Instance details

Defined in Control.Monad.Fix

Methods

mfix :: (a -> Either e a) -> Either e a Source #

Applicative ( Either e)

Since: base-3.0

Instance details

Defined in Data.Either

Foldable ( Either a)

Since: base-4.7.0.0

Instance details

Defined in Data.Foldable

Methods

fold :: Monoid m => Either a m -> m Source #

foldMap :: Monoid m => (a0 -> m) -> Either a a0 -> m Source #

foldMap' :: Monoid m => (a0 -> m) -> Either a a0 -> m Source #

foldr :: (a0 -> b -> b) -> b -> Either a a0 -> b Source #

foldr' :: (a0 -> b -> b) -> b -> Either a a0 -> b Source #

foldl :: (b -> a0 -> b) -> b -> Either a a0 -> b Source #

foldl' :: (b -> a0 -> b) -> b -> Either a a0 -> b Source #

foldr1 :: (a0 -> a0 -> a0) -> Either a a0 -> a0 Source #

foldl1 :: (a0 -> a0 -> a0) -> Either a a0 -> a0 Source #

toList :: Either a a0 -> [a0] Source #

null :: Either a a0 -> Bool Source #

length :: Either a a0 -> Int Source #

elem :: Eq a0 => a0 -> Either a a0 -> Bool Source #

maximum :: Ord a0 => Either a a0 -> a0 Source #

minimum :: Ord a0 => Either a a0 -> a0 Source #

sum :: Num a0 => Either a a0 -> a0 Source #

product :: Num a0 => Either a a0 -> a0 Source #

Traversable ( Either a)

Since: base-4.7.0.0

Instance details

Defined in Data.Traversable

Methods

traverse :: Applicative f => (a0 -> f b) -> Either a a0 -> f ( Either a b) Source #

sequenceA :: Applicative f => Either a (f a0) -> f ( Either a a0) Source #

mapM :: Monad m => (a0 -> m b) -> Either a a0 -> m ( Either a b) Source #

sequence :: Monad m => Either a (m a0) -> m ( Either a a0) Source #

ToJSON a => ToJSON1 ( Either a)
Instance details

Defined in Data.Aeson.Types.ToJSON

FromJSON a => FromJSON1 ( Either a)
Instance details

Defined in Data.Aeson.Types.FromJSON

Eq a => Eq1 ( Either a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Classes

Methods

liftEq :: (a0 -> b -> Bool ) -> Either a a0 -> Either a b -> Bool Source #

Ord a => Ord1 ( Either a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Classes

Show a => Show1 ( Either a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Classes

Read a => Read1 ( Either a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Classes

MonadFailure ( Either a)
Instance details

Defined in Basement.Monad

Associated Types

type Failure ( Either a) Source #

NFData a => NFData1 ( Either a)

Since: deepseq-1.4.3.0

Instance details

Defined in Control.DeepSeq

Methods

liftRnf :: (a0 -> ()) -> Either a a0 -> () Source #

Hashable a => Hashable1 ( Either a)
Instance details

Defined in Data.Hashable.Class

Functor ( Either c) Source #
Instance details

Defined in PlutusTx.Functor

Methods

fmap :: (a -> b) -> Either c a -> Either c b Source #

Applicative ( Either a) Source #
Instance details

Defined in PlutusTx.Applicative

Foldable ( Either c) Source #
Instance details

Defined in PlutusTx.Foldable

Methods

foldMap :: Monoid m => (a -> m) -> Either c a -> m Source #

Traversable ( Either c) Source #
Instance details

Defined in PlutusTx.Traversable

Methods

traverse :: Applicative f => (a -> f b) -> Either c a -> f ( Either c b) Source #

Generic1 ( Either a :: Type -> Type )

Since: base-4.6.0.0

Instance details

Defined in GHC.Generics

Associated Types

type Rep1 ( Either a) :: k -> Type Source #

Methods

from1 :: forall (a0 :: k). Either a a0 -> Rep1 ( Either a) a0 Source #

to1 :: forall (a0 :: k). Rep1 ( Either a) a0 -> Either a a0 Source #

MonadBaseControl ( Either e) ( Either e)
Instance details

Defined in Control.Monad.Trans.Control

Associated Types

type StM ( Either e) a Source #

( Eq a, Eq b) => Eq ( Either a b)

Since: base-2.1

Instance details

Defined in Data.Either

( Data a, Data b) => Data ( Either a b)

Since: base-4.0.0.0

Instance details

Defined in Data.Data

Methods

gfoldl :: ( forall d b0. Data d => c (d -> b0) -> d -> c b0) -> ( forall g. g -> c g) -> Either a b -> c ( Either a b) Source #

gunfold :: ( forall b0 r. Data b0 => c (b0 -> r) -> c r) -> ( forall r. r -> c r) -> Constr -> c ( Either a b) Source #

toConstr :: Either a b -> Constr Source #

dataTypeOf :: Either a b -> DataType Source #

dataCast1 :: Typeable t => ( forall d. Data d => c (t d)) -> Maybe (c ( Either a b)) Source #

dataCast2 :: Typeable t => ( forall d e. ( Data d, Data e) => c (t d e)) -> Maybe (c ( Either a b)) Source #

gmapT :: ( forall b0. Data b0 => b0 -> b0) -> Either a b -> Either a b Source #

gmapQl :: (r -> r' -> r) -> r -> ( forall d. Data d => d -> r') -> Either a b -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> ( forall d. Data d => d -> r') -> Either a b -> r Source #

gmapQ :: ( forall d. Data d => d -> u) -> Either a b -> [u] Source #

gmapQi :: Int -> ( forall d. Data d => d -> u) -> Either a b -> u Source #

gmapM :: Monad m => ( forall d. Data d => d -> m d) -> Either a b -> m ( Either a b) Source #

gmapMp :: MonadPlus m => ( forall d. Data d => d -> m d) -> Either a b -> m ( Either a b) Source #

gmapMo :: MonadPlus m => ( forall d. Data d => d -> m d) -> Either a b -> m ( Either a b) Source #

( Ord a, Ord b) => Ord ( Either a b)

Since: base-2.1

Instance details

Defined in Data.Either

( Read a, Read b) => Read ( Either a b)

Since: base-3.0

Instance details

Defined in Data.Either

( Show a, Show b) => Show ( Either a b)

Since: base-3.0

Instance details

Defined in Data.Either

Generic ( Either a b)

Since: base-4.6.0.0

Instance details

Defined in GHC.Generics

Associated Types

type Rep ( Either a b) :: Type -> Type Source #

Semigroup ( Either a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Either

( Hashable a, Hashable b) => Hashable ( Either a b)
Instance details

Defined in Data.Hashable.Class

( ToJSON a, ToJSON b) => ToJSON ( Either a b)
Instance details

Defined in Data.Aeson.Types.ToJSON

( FromJSON a, FromJSON b) => FromJSON ( Either a b)
Instance details

Defined in Data.Aeson.Types.FromJSON

( NFData a, NFData b) => NFData ( Either a b)
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Either a b -> () Source #

MonoFunctor ( Either a b)
Instance details

Defined in Data.MonoTraversable

MonoFoldable ( Either a b)
Instance details

Defined in Data.MonoTraversable

Methods

ofoldMap :: Monoid m => ( Element ( Either a b) -> m) -> Either a b -> m Source #

ofoldr :: ( Element ( Either a b) -> b0 -> b0) -> b0 -> Either a b -> b0 Source #

ofoldl' :: (a0 -> Element ( Either a b) -> a0) -> a0 -> Either a b -> a0 Source #

otoList :: Either a b -> [ Element ( Either a b)] Source #

oall :: ( Element ( Either a b) -> Bool ) -> Either a b -> Bool Source #

oany :: ( Element ( Either a b) -> Bool ) -> Either a b -> Bool Source #

onull :: Either a b -> Bool Source #

olength :: Either a b -> Int Source #

olength64 :: Either a b -> Int64 Source #

ocompareLength :: Integral i => Either a b -> i -> Ordering Source #

otraverse_ :: Applicative f => ( Element ( Either a b) -> f b0) -> Either a b -> f () Source #

ofor_ :: Applicative f => Either a b -> ( Element ( Either a b) -> f b0) -> f () Source #

omapM_ :: Applicative m => ( Element ( Either a b) -> m ()) -> Either a b -> m () Source #

oforM_ :: Applicative m => Either a b -> ( Element ( Either a b) -> m ()) -> m () Source #

ofoldlM :: Monad m => (a0 -> Element ( Either a b) -> m a0) -> a0 -> Either a b -> m a0 Source #

ofoldMap1Ex :: Semigroup m => ( Element ( Either a b) -> m) -> Either a b -> m Source #

ofoldr1Ex :: ( Element ( Either a b) -> Element ( Either a b) -> Element ( Either a b)) -> Either a b -> Element ( Either a b) Source #

ofoldl1Ex' :: ( Element ( Either a b) -> Element ( Either a b) -> Element ( Either a b)) -> Either a b -> Element ( Either a b) Source #

headEx :: Either a b -> Element ( Either a b) Source #

lastEx :: Either a b -> Element ( Either a b) Source #

unsafeHead :: Either a b -> Element ( Either a b) Source #

unsafeLast :: Either a b -> Element ( Either a b) Source #

maximumByEx :: ( Element ( Either a b) -> Element ( Either a b) -> Ordering ) -> Either a b -> Element ( Either a b) Source #

minimumByEx :: ( Element ( Either a b) -> Element ( Either a b) -> Ordering ) -> Either a b -> Element ( Either a b) Source #

oelem :: Element ( Either a b) -> Either a b -> Bool Source #

onotElem :: Element ( Either a b) -> Either a b -> Bool Source #

MonoTraversable ( Either a b)
Instance details

Defined in Data.MonoTraversable

MonoPointed ( Either a b)
Instance details

Defined in Data.MonoTraversable

Recursive ( Either a b)
Instance details

Defined in Data.Functor.Foldable

Methods

project :: Either a b -> Base ( Either a b) ( Either a b) Source #

cata :: ( Base ( Either a b) a0 -> a0) -> Either a b -> a0 Source #

para :: ( Base ( Either a b) ( Either a b, a0) -> a0) -> Either a b -> a0 Source #

gpara :: ( Corecursive ( Either a b), Comonad w) => ( forall b0. Base ( Either a b) (w b0) -> w ( Base ( Either a b) b0)) -> ( Base ( Either a b) ( EnvT ( Either a b) w a0) -> a0) -> Either a b -> a0 Source #

prepro :: Corecursive ( Either a b) => ( forall b0. Base ( Either a b) b0 -> Base ( Either a b) b0) -> ( Base ( Either a b) a0 -> a0) -> Either a b -> a0 Source #

gprepro :: ( Corecursive ( Either a b), Comonad w) => ( forall b0. Base ( Either a b) (w b0) -> w ( Base ( Either a b) b0)) -> ( forall c. Base ( Either a b) c -> Base ( Either a b) c) -> ( Base ( Either a b) (w a0) -> a0) -> Either a b -> a0 Source #

Corecursive ( Either a b)
Instance details

Defined in Data.Functor.Foldable

Methods

embed :: Base ( Either a b) ( Either a b) -> Either a b Source #

ana :: (a0 -> Base ( Either a b) a0) -> a0 -> Either a b Source #

apo :: (a0 -> Base ( Either a b) ( Either ( Either a b) a0)) -> a0 -> Either a b Source #

postpro :: Recursive ( Either a b) => ( forall b0. Base ( Either a b) b0 -> Base ( Either a b) b0) -> (a0 -> Base ( Either a b) a0) -> a0 -> Either a b Source #

gpostpro :: ( Recursive ( Either a b), Monad m) => ( forall b0. m ( Base ( Either a b) b0) -> Base ( Either a b) (m b0)) -> ( forall c. Base ( Either a b) c -> Base ( Either a b) c) -> (a0 -> Base ( Either a b) (m a0)) -> a0 -> Either a b Source #

( Serialise a, Serialise b) => Serialise ( Either a b)

Since: serialise-0.2.0.0

Instance details

Defined in Codec.Serialise.Class

( Eq a, Eq b) => Eq ( Either a b) Source #
Instance details

Defined in PlutusTx.Eq

( Ord a, Ord b) => Ord ( Either a b) Source #
Instance details

Defined in PlutusTx.Ord

( UnsafeFromData a, UnsafeFromData b) => UnsafeFromData ( Either a b) Source #
Instance details

Defined in PlutusTx.IsData.Instances

( FromData a, FromData b) => FromData ( Either a b) Source #
Instance details

Defined in PlutusTx.IsData.Instances

( ToData a, ToData b) => ToData ( Either a b) Source #
Instance details

Defined in PlutusTx.IsData.Instances

Typeable DefaultUni Either Source #
Instance details

Defined in PlutusTx.Lift.Instances

(a ~ a', b ~ b') => Each ( Either a a') ( Either b b') a b
each :: Traversal (Either a a) (Either b b) a b

Since: lens-4.18

Instance details

Defined in Control.Lens.Each

(a ~ a', b ~ b') => Each ( Either a a') ( Either b b') a b

Since: microlens-0.4.11

Instance details

Defined in Lens.Micro.Internal

( FunctorWithIndex i f, FunctorWithIndex j g) => FunctorWithIndex ( Either i j) ( Sum f g)
Instance details

Defined in WithIndex

Methods

imap :: ( Either i j -> a -> b) -> Sum f g a -> Sum f g b Source #

( FunctorWithIndex i f, FunctorWithIndex j g) => FunctorWithIndex ( Either i j) ( Product f g)
Instance details

Defined in WithIndex

Methods

imap :: ( Either i j -> a -> b) -> Product f g a -> Product f g b Source #

( FunctorWithIndex i f, FunctorWithIndex j g) => FunctorWithIndex ( Either i j) (f :+: g)
Instance details

Defined in WithIndex

Methods

imap :: ( Either i j -> a -> b) -> (f :+: g) a -> (f :+: g) b Source #

( FunctorWithIndex i f, FunctorWithIndex j g) => FunctorWithIndex ( Either i j) (f :*: g)
Instance details

Defined in WithIndex

Methods

imap :: ( Either i j -> a -> b) -> (f :*: g) a -> (f :*: g) b Source #

( FoldableWithIndex i f, FoldableWithIndex j g) => FoldableWithIndex ( Either i j) ( Sum f g)
Instance details

Defined in WithIndex

Methods

ifoldMap :: Monoid m => ( Either i j -> a -> m) -> Sum f g a -> m Source #

ifoldMap' :: Monoid m => ( Either i j -> a -> m) -> Sum f g a -> m Source #

ifoldr :: ( Either i j -> a -> b -> b) -> b -> Sum f g a -> b Source #

ifoldl :: ( Either i j -> b -> a -> b) -> b -> Sum f g a -> b Source #

ifoldr' :: ( Either i j -> a -> b -> b) -> b -> Sum f g a -> b Source #

ifoldl' :: ( Either i j -> b -> a -> b) -> b -> Sum f g a -> b Source #

( FoldableWithIndex i f, FoldableWithIndex j g) => FoldableWithIndex ( Either i j) ( Product f g)
Instance details

Defined in WithIndex

Methods

ifoldMap :: Monoid m => ( Either i j -> a -> m) -> Product f g a -> m Source #

ifoldMap' :: Monoid m => ( Either i j -> a -> m) -> Product f g a -> m Source #

ifoldr :: ( Either i j -> a -> b -> b) -> b -> Product f g a -> b Source #

ifoldl :: ( Either i j -> b -> a -> b) -> b -> Product f g a -> b Source #

ifoldr' :: ( Either i j -> a -> b -> b) -> b -> Product f g a -> b Source #

ifoldl' :: ( Either i j -> b -> a -> b) -> b -> Product f g a -> b Source #

( FoldableWithIndex i f, FoldableWithIndex j g) => FoldableWithIndex ( Either i j) (f :+: g)
Instance details

Defined in WithIndex

Methods

ifoldMap :: Monoid m => ( Either i j -> a -> m) -> (f :+: g) a -> m Source #

ifoldMap' :: Monoid m => ( Either i j -> a -> m) -> (f :+: g) a -> m Source #

ifoldr :: ( Either i j -> a -> b -> b) -> b -> (f :+: g) a -> b Source #

ifoldl :: ( Either i j -> b -> a -> b) -> b -> (f :+: g) a -> b Source #

ifoldr' :: ( Either i j -> a -> b -> b) -> b -> (f :+: g) a -> b Source #

ifoldl' :: ( Either i j -> b -> a -> b) -> b -> (f :+: g) a -> b Source #

( FoldableWithIndex i f, FoldableWithIndex j g) => FoldableWithIndex ( Either i j) (f :*: g)
Instance details

Defined in WithIndex

Methods

ifoldMap :: Monoid m => ( Either i j -> a -> m) -> (f :*: g) a -> m Source #

ifoldMap' :: Monoid m => ( Either i j -> a -> m) -> (f :*: g) a -> m Source #

ifoldr :: ( Either i j -> a -> b -> b) -> b -> (f :*: g) a -> b Source #

ifoldl :: ( Either i j -> b -> a -> b) -> b -> (f :*: g) a -> b Source #

ifoldr' :: ( Either i j -> a -> b -> b) -> b -> (f :*: g) a -> b Source #

ifoldl' :: ( Either i j -> b -> a -> b) -> b -> (f :*: g) a -> b Source #

( TraversableWithIndex i f, TraversableWithIndex j g) => TraversableWithIndex ( Either i j) ( Sum f g)
Instance details

Defined in WithIndex

Methods

itraverse :: Applicative f0 => ( Either i j -> a -> f0 b) -> Sum f g a -> f0 ( Sum f g b) Source #

( TraversableWithIndex i f, TraversableWithIndex j g) => TraversableWithIndex ( Either i j) ( Product f g)
Instance details

Defined in WithIndex

Methods

itraverse :: Applicative f0 => ( Either i j -> a -> f0 b) -> Product f g a -> f0 ( Product f g b) Source #

( TraversableWithIndex i f, TraversableWithIndex j g) => TraversableWithIndex ( Either i j) (f :+: g)
Instance details

Defined in WithIndex

Methods

itraverse :: Applicative f0 => ( Either i j -> a -> f0 b) -> (f :+: g) a -> f0 ((f :+: g) b) Source #

( TraversableWithIndex i f, TraversableWithIndex j g) => TraversableWithIndex ( Either i j) (f :*: g)
Instance details

Defined in WithIndex

Methods

itraverse :: Applicative f0 => ( Either i j -> a -> f0 b) -> (f :*: g) a -> f0 ((f :*: g) b) Source #

type Failure ( Either a)
Instance details

Defined in Basement.Monad

type Failure ( Either a) = a
type StM ( Either e) a
Instance details

Defined in Control.Monad.Trans.Control

type StM ( Either e) a = a
type Rep1 ( Either a :: Type -> Type )
Instance details

Defined in GHC.Generics

type Rep ( Either a b)
Instance details

Defined in GHC.Generics

type Element ( Either a b)
Instance details

Defined in Data.MonoTraversable

type Element ( Either a b) = b
type Base ( Either a b)

Example boring stub for non-recursive data types

Instance details

Defined in Data.Functor.Foldable

isLeft :: Either a b -> Bool Source #

Return True if the given value is a Left -value, False otherwise.

isRight :: Either a b -> Bool Source #

Return True if the given value is a Right -value, False otherwise.

either :: (a -> c) -> (b -> c) -> Either a b -> c Source #

Plutus Tx version of either