hkd-delta-0.0.1: Definition of "Delta structures" for higher kinded data.

Safe HaskellSafe
LanguageHaskell2010

HKD.Delta.Type

Synopsis

Documentation

data Static a Source #

Useful DeltaOf for data that doesn't change, and for changes that will be ignored.

Constructors

Static 
Instances
Functor (Static :: Type -> Type) Source # 
Instance details

Defined in HKD.Delta.Type

Methods

fmap :: (a -> b) -> Static a -> Static b #

(<$) :: a -> Static b -> Static a #

Show (Static a) Source # 
Instance details

Defined in HKD.Delta.Type

Methods

showsPrec :: Int -> Static a -> ShowS #

show :: Static a -> String #

showList :: [Static a] -> ShowS #

Generic (Static a) Source # 
Instance details

Defined in HKD.Delta.Type

Associated Types

type Rep (Static a) :: Type -> Type #

Methods

from :: Static a -> Rep (Static a) x #

to :: Rep (Static a) x -> Static a #

type Rep (Static a) Source # 
Instance details

Defined in HKD.Delta.Type

type Rep (Static a) = D1 (MetaData "Static" "HKD.Delta.Type" "hkd-delta-0.0.1-H7JqDbcwNBC1TKavXmHUJi" False) (C1 (MetaCons "Static" PrefixI False) (U1 :: Type -> Type))

data Change a Source #

The Maybe type for Deltas. Useful for signaling that there is some change within a data structure. This is recognized by the generically derived delta methods, such that a construction with all Unchanged fields will yield an Unchanged data.

Constructors

Unchanged 
Changed a 
Instances
Functor Change Source # 
Instance details

Defined in HKD.Delta.Type

Methods

fmap :: (a -> b) -> Change a -> Change b #

(<$) :: a -> Change b -> Change a #

Applicative Change Source # 
Instance details

Defined in HKD.Delta.Type

Methods

pure :: a -> Change a #

(<*>) :: Change (a -> b) -> Change a -> Change b #

liftA2 :: (a -> b -> c) -> Change a -> Change b -> Change c #

(*>) :: Change a -> Change b -> Change b #

(<*) :: Change a -> Change b -> Change a #

Foldable Change Source # 
Instance details

Defined in HKD.Delta.Type

Methods

fold :: Monoid m => Change m -> m #

foldMap :: Monoid m => (a -> m) -> Change a -> m #

foldr :: (a -> b -> b) -> b -> Change a -> b #

foldr' :: (a -> b -> b) -> b -> Change a -> b #

foldl :: (b -> a -> b) -> b -> Change a -> b #

foldl' :: (b -> a -> b) -> b -> Change a -> b #

foldr1 :: (a -> a -> a) -> Change a -> a #

foldl1 :: (a -> a -> a) -> Change a -> a #

toList :: Change a -> [a] #

null :: Change a -> Bool #

length :: Change a -> Int #

elem :: Eq a => a -> Change a -> Bool #

maximum :: Ord a => Change a -> a #

minimum :: Ord a => Change a -> a #

sum :: Num a => Change a -> a #

product :: Num a => Change a -> a #

Traversable Change Source # 
Instance details

Defined in HKD.Delta.Type

Methods

traverse :: Applicative f => (a -> f b) -> Change a -> f (Change b) #

sequenceA :: Applicative f => Change (f a) -> f (Change a) #

mapM :: Monad m => (a -> m b) -> Change a -> m (Change b) #

sequence :: Monad m => Change (m a) -> m (Change a) #

Show a => Show (Change a) Source # 
Instance details

Defined in HKD.Delta.Type

Methods

showsPrec :: Int -> Change a -> ShowS #

show :: Change a -> String #

showList :: [Change a] -> ShowS #

Semigroup a => Semigroup (Change a) Source # 
Instance details

Defined in HKD.Delta.Type

Methods

(<>) :: Change a -> Change a -> Change a #

sconcat :: NonEmpty (Change a) -> Change a #

stimes :: Integral b => b -> Change a -> Change a #

Semigroup a => Monoid (Change a) Source # 
Instance details

Defined in HKD.Delta.Type

Methods

mempty :: Change a #

mappend :: Change a -> Change a -> Change a #

mconcat :: [Change a] -> Change a #

change :: b -> (a -> b) -> Change a -> b Source #

data Revise r u Source #

Either for deltas. Used to signal that the delta is a full replacement or just an update.

Constructors

Replace r 
Update u 
Instances
Bifunctor Revise Source # 
Instance details

Defined in HKD.Delta.Type

Methods

bimap :: (a -> b) -> (c -> d) -> Revise a c -> Revise b d #

first :: (a -> b) -> Revise a c -> Revise b c #

second :: (b -> c) -> Revise a b -> Revise a c #

Functor (Revise r) Source # 
Instance details

Defined in HKD.Delta.Type

Methods

fmap :: (a -> b) -> Revise r a -> Revise r b #

(<$) :: a -> Revise r b -> Revise r a #

Applicative (Revise r) Source # 
Instance details

Defined in HKD.Delta.Type

Methods

pure :: a -> Revise r a #

(<*>) :: Revise r (a -> b) -> Revise r a -> Revise r b #

liftA2 :: (a -> b -> c) -> Revise r a -> Revise r b -> Revise r c #

(*>) :: Revise r a -> Revise r b -> Revise r b #

(<*) :: Revise r a -> Revise r b -> Revise r a #

Foldable (Revise r) Source # 
Instance details

Defined in HKD.Delta.Type

Methods

fold :: Monoid m => Revise r m -> m #

foldMap :: Monoid m => (a -> m) -> Revise r a -> m #

foldr :: (a -> b -> b) -> b -> Revise r a -> b #

foldr' :: (a -> b -> b) -> b -> Revise r a -> b #

foldl :: (b -> a -> b) -> b -> Revise r a -> b #

foldl' :: (b -> a -> b) -> b -> Revise r a -> b #

foldr1 :: (a -> a -> a) -> Revise r a -> a #

foldl1 :: (a -> a -> a) -> Revise r a -> a #

toList :: Revise r a -> [a] #

null :: Revise r a -> Bool #

length :: Revise r a -> Int #

elem :: Eq a => a -> Revise r a -> Bool #

maximum :: Ord a => Revise r a -> a #

minimum :: Ord a => Revise r a -> a #

sum :: Num a => Revise r a -> a #

product :: Num a => Revise r a -> a #

Traversable (Revise r) Source # 
Instance details

Defined in HKD.Delta.Type

Methods

traverse :: Applicative f => (a -> f b) -> Revise r a -> f (Revise r b) #

sequenceA :: Applicative f => Revise r (f a) -> f (Revise r a) #

mapM :: Monad m => (a -> m b) -> Revise r a -> m (Revise r b) #

sequence :: Monad m => Revise r (m a) -> m (Revise r a) #

(Eq r, Eq u) => Eq (Revise r u) Source # 
Instance details

Defined in HKD.Delta.Type

Methods

(==) :: Revise r u -> Revise r u -> Bool #

(/=) :: Revise r u -> Revise r u -> Bool #

(Show r, Show u) => Show (Revise r u) Source # 
Instance details

Defined in HKD.Delta.Type

Methods

showsPrec :: Int -> Revise r u -> ShowS #

show :: Revise r u -> String #

showList :: [Revise r u] -> ShowS #

Generic (Revise r u) Source # 
Instance details

Defined in HKD.Delta.Type

Associated Types

type Rep (Revise r u) :: Type -> Type #

Methods

from :: Revise r u -> Rep (Revise r u) x #

to :: Rep (Revise r u) x -> Revise r u #

Semigroup (Revise r (r -> r)) Source # 
Instance details

Defined in HKD.Delta.Type

Methods

(<>) :: Revise r (r -> r) -> Revise r (r -> r) -> Revise r (r -> r) #

sconcat :: NonEmpty (Revise r (r -> r)) -> Revise r (r -> r) #

stimes :: Integral b => b -> Revise r (r -> r) -> Revise r (r -> r) #

Monoid (Revise r (r -> r)) Source # 
Instance details

Defined in HKD.Delta.Type

Methods

mempty :: Revise r (r -> r) #

mappend :: Revise r (r -> r) -> Revise r (r -> r) -> Revise r (r -> r) #

mconcat :: [Revise r (r -> r)] -> Revise r (r -> r) #

type Rep (Revise r u) Source # 
Instance details

Defined in HKD.Delta.Type

type Rep (Revise r u) = D1 (MetaData "Revise" "HKD.Delta.Type" "hkd-delta-0.0.1-H7JqDbcwNBC1TKavXmHUJi" False) (C1 (MetaCons "Replace" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 r)) :+: C1 (MetaCons "Update" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 u)))

revise :: (r -> z) -> (u -> z) -> Revise r u -> z Source #