merge-0.1.0.0: A functor for consistent merging of information
CopyrightSamuel Schlesinger 2021 (c)
LicenseMIT
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Merge

Description

 
Synopsis

Documentation

newtype Merge x a Source #

Describes the merging of two values of the same type into some other type. Represented as a Maybe valued function, one can also think of this as a predicate showing which pairs of values can be merged in this way.

data Example = Whatever { a :: Int, b :: Maybe Bool }
mergeExamples :: Merge Example Example
mergeExamples = Example <$> required a <*> optional b

Constructors

Merge 

Fields

Instances

Instances details
Profunctor Merge Source # 
Instance details

Defined in Data.Merge

Methods

dimap :: (a -> b) -> (c -> d) -> Merge b c -> Merge a d #

lmap :: (a -> b) -> Merge b c -> Merge a c #

rmap :: (b -> c) -> Merge a b -> Merge a c #

(#.) :: forall a b c q. Coercible c b => q b c -> Merge a b -> Merge a c #

(.#) :: forall a b c q. Coercible b a => Merge b c -> q a b -> Merge a c #

Monad (Merge x) Source # 
Instance details

Defined in Data.Merge

Methods

(>>=) :: Merge x a -> (a -> Merge x b) -> Merge x b #

(>>) :: Merge x a -> Merge x b -> Merge x b #

return :: a -> Merge x a #

Functor (Merge x) Source # 
Instance details

Defined in Data.Merge

Methods

fmap :: (a -> b) -> Merge x a -> Merge x b #

(<$) :: a -> Merge x b -> Merge x a #

Applicative (Merge x) Source # 
Instance details

Defined in Data.Merge

Methods

pure :: a -> Merge x a #

(<*>) :: Merge x (a -> b) -> Merge x a -> Merge x b #

liftA2 :: (a -> b -> c) -> Merge x a -> Merge x b -> Merge x c #

(*>) :: Merge x a -> Merge x b -> Merge x b #

(<*) :: Merge x a -> Merge x b -> Merge x a #

Alternative (Merge x) Source # 
Instance details

Defined in Data.Merge

Methods

empty :: Merge x a #

(<|>) :: Merge x a -> Merge x a -> Merge x a #

some :: Merge x a -> Merge x [a] #

many :: Merge x a -> Merge x [a] #

Semigroup a => Semigroup (Merge x a) Source # 
Instance details

Defined in Data.Merge

Methods

(<>) :: Merge x a -> Merge x a -> Merge x a #

sconcat :: NonEmpty (Merge x a) -> Merge x a #

stimes :: Integral b => b -> Merge x a -> Merge x a #

Semigroup a => Monoid (Merge x a) Source # 
Instance details

Defined in Data.Merge

Methods

mempty :: Merge x a #

mappend :: Merge x a -> Merge x a -> Merge x a #

mconcat :: [Merge x a] -> Merge x a #

merge :: (x -> x -> Maybe a) -> Merge x a Source #

The most general combinator for constructing Merges.

optional :: Eq a => (x -> Maybe a) -> Merge x (Maybe a) Source #

Meant to be used to merge optional fields in a record.

required :: Eq a => (x -> a) -> Merge x a Source #

Meant to be used to merge required fields in a record.