diff-0.1.0.0: Diff and patch
Safe HaskellNone
LanguageHaskell2010

Diff

Documentation

class Different a where Source #

Minimal complete definition

Nothing

Associated Types

type Diff a Source #

type Diff a = Diff (Rep a ()) Source #

Methods

diff :: a -> a -> Diff a Source #

default diff :: (Generic a, Different (Rep a ()), Diff a ~ Diff (Rep a ())) => a -> a -> Diff a Source #

patch :: Diff a -> a -> Maybe a Source #

default patch :: (Generic a, Different (Rep a ()), Diff a ~ Diff (Rep a ())) => Diff a -> a -> Maybe a Source #

Instances

Instances details
Different Bool Source # 
Instance details

Defined in Diff

Associated Types

type Diff Bool Source #

Different Char Source # 
Instance details

Defined in Diff

Associated Types

type Diff Char Source #

Different Int Source # 
Instance details

Defined in Diff

Associated Types

type Diff Int Source #

Methods

diff :: Int -> Int -> Diff Int Source #

patch :: Diff Int -> Int -> Maybe Int Source #

Different Int8 Source # 
Instance details

Defined in Diff

Associated Types

type Diff Int8 Source #

Different Int16 Source # 
Instance details

Defined in Diff

Associated Types

type Diff Int16 Source #

Different Int32 Source # 
Instance details

Defined in Diff

Associated Types

type Diff Int32 Source #

Different Int64 Source # 
Instance details

Defined in Diff

Associated Types

type Diff Int64 Source #

Different Integer Source # 
Instance details

Defined in Diff

Associated Types

type Diff Integer Source #

Different Natural Source # 
Instance details

Defined in Diff

Associated Types

type Diff Natural Source #

Different Ordering Source # 
Instance details

Defined in Diff

Associated Types

type Diff Ordering Source #

Different Word Source # 
Instance details

Defined in Diff

Associated Types

type Diff Word Source #

Different Word8 Source # 
Instance details

Defined in Diff

Associated Types

type Diff Word8 Source #

Different Word16 Source # 
Instance details

Defined in Diff

Associated Types

type Diff Word16 Source #

Different Word32 Source # 
Instance details

Defined in Diff

Associated Types

type Diff Word32 Source #

Different Word64 Source # 
Instance details

Defined in Diff

Associated Types

type Diff Word64 Source #

Different () Source # 
Instance details

Defined in Diff

Associated Types

type Diff () Source #

Methods

diff :: () -> () -> Diff () Source #

patch :: Diff () -> () -> Maybe () Source #

Different Void Source # 
Instance details

Defined in Diff

Associated Types

type Diff Void Source #

Different Version Source # 
Instance details

Defined in Diff

Associated Types

type Diff Version Source #

(Eq a, Different a) => Different [a] Source # 
Instance details

Defined in Diff

Associated Types

type Diff [a] Source #

Methods

diff :: [a] -> [a] -> Diff [a] Source #

patch :: Diff [a] -> [a] -> Maybe [a] Source #

(Eq a, Different a) => Different (Maybe a) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (Maybe a) Source #

Methods

diff :: Maybe a -> Maybe a -> Diff (Maybe a) Source #

patch :: Diff (Maybe a) -> Maybe a -> Maybe (Maybe a) Source #

Different a => Different (Par1 a) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (Par1 a) Source #

Methods

diff :: Par1 a -> Par1 a -> Diff (Par1 a) Source #

patch :: Diff (Par1 a) -> Par1 a -> Maybe (Par1 a) Source #

Different a => Different (Identity a) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (Identity a) Source #

Methods

diff :: Identity a -> Identity a -> Diff (Identity a) Source #

patch :: Diff (Identity a) -> Identity a -> Maybe (Identity a) Source #

(Eq a, Different a) => Different (NonEmpty a) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (NonEmpty a) Source #

Methods

diff :: NonEmpty a -> NonEmpty a -> Diff (NonEmpty a) Source #

patch :: Diff (NonEmpty a) -> NonEmpty a -> Maybe (NonEmpty a) Source #

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

Defined in Diff

Associated Types

type Diff (Either a b) Source #

Methods

diff :: Either a b -> Either a b -> Diff (Either a b) Source #

patch :: Diff (Either a b) -> Either a b -> Maybe (Either a b) Source #

Different (V1 a) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (V1 a) Source #

Methods

diff :: V1 a -> V1 a -> Diff (V1 a) Source #

patch :: Diff (V1 a) -> V1 a -> Maybe (V1 a) Source #

Different (U1 a) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (U1 a) Source #

Methods

diff :: U1 a -> U1 a -> Diff (U1 a) Source #

patch :: Diff (U1 a) -> U1 a -> Maybe (U1 a) Source #

(Different a, Different b) => Different (a, b) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (a, b) Source #

Methods

diff :: (a, b) -> (a, b) -> Diff (a, b) Source #

patch :: Diff (a, b) -> (a, b) -> Maybe (a, b) Source #

(Different a, Different b) => Different (Arg a b) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (Arg a b) Source #

Methods

diff :: Arg a b -> Arg a b -> Diff (Arg a b) Source #

patch :: Diff (Arg a b) -> Arg a b -> Maybe (Arg a b) Source #

Different (Proxy a) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (Proxy a) Source #

Methods

diff :: Proxy a -> Proxy a -> Diff (Proxy a) Source #

patch :: Diff (Proxy a) -> Proxy a -> Maybe (Proxy a) Source #

Different (f a) => Different (Rec1 f a) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (Rec1 f a) Source #

Methods

diff :: Rec1 f a -> Rec1 f a -> Diff (Rec1 f a) Source #

patch :: Diff (Rec1 f a) -> Rec1 f a -> Maybe (Rec1 f a) Source #

(Different a, Different b, Different c) => Different (a, b, c) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (a, b, c) Source #

Methods

diff :: (a, b, c) -> (a, b, c) -> Diff (a, b, c) Source #

patch :: Diff (a, b, c) -> (a, b, c) -> Maybe (a, b, c) Source #

Different a => Different (Const a b) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (Const a b) Source #

Methods

diff :: Const a b -> Const a b -> Diff (Const a b) Source #

patch :: Diff (Const a b) -> Const a b -> Maybe (Const a b) Source #

Different (f a) => Different (Alt f a) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (Alt f a) Source #

Methods

diff :: Alt f a -> Alt f a -> Diff (Alt f a) Source #

patch :: Diff (Alt f a) -> Alt f a -> Maybe (Alt f a) Source #

Different c => Different (K1 i c a) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (K1 i c a) Source #

Methods

diff :: K1 i c a -> K1 i c a -> Diff (K1 i c a) Source #

patch :: Diff (K1 i c a) -> K1 i c a -> Maybe (K1 i c a) Source #

(Different (f a), Eq (f a), Different (g a), Eq (g a)) => Different ((f :+: g) a) Source # 
Instance details

Defined in Diff

Associated Types

type Diff ((f :+: g) a) Source #

Methods

diff :: (f :+: g) a -> (f :+: g) a -> Diff ((f :+: g) a) Source #

patch :: Diff ((f :+: g) a) -> (f :+: g) a -> Maybe ((f :+: g) a) Source #

(Different (f a), Different (g a)) => Different ((f :*: g) a) Source # 
Instance details

Defined in Diff

Associated Types

type Diff ((f :*: g) a) Source #

Methods

diff :: (f :*: g) a -> (f :*: g) a -> Diff ((f :*: g) a) Source #

patch :: Diff ((f :*: g) a) -> (f :*: g) a -> Maybe ((f :*: g) a) Source #

(Different a, Different b, Different c, Different d) => Different (a, b, c, d) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (a, b, c, d) Source #

Methods

diff :: (a, b, c, d) -> (a, b, c, d) -> Diff (a, b, c, d) Source #

patch :: Diff (a, b, c, d) -> (a, b, c, d) -> Maybe (a, b, c, d) Source #

(Different (f a), Different (g a)) => Different (Product f g a) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (Product f g a) Source #

Methods

diff :: Product f g a -> Product f g a -> Diff (Product f g a) Source #

patch :: Diff (Product f g a) -> Product f g a -> Maybe (Product f g a) Source #

(Different (f a), Eq (f a), Different (g a), Eq (g a)) => Different (Sum f g a) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (Sum f g a) Source #

Methods

diff :: Sum f g a -> Sum f g a -> Diff (Sum f g a) Source #

patch :: Diff (Sum f g a) -> Sum f g a -> Maybe (Sum f g a) Source #

Different (f a) => Different (M1 i c f a) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (M1 i c f a) Source #

Methods

diff :: M1 i c f a -> M1 i c f a -> Diff (M1 i c f a) Source #

patch :: Diff (M1 i c f a) -> M1 i c f a -> Maybe (M1 i c f a) Source #

Different (f (g a)) => Different ((f :.: g) a) Source # 
Instance details

Defined in Diff

Associated Types

type Diff ((f :.: g) a) Source #

Methods

diff :: (f :.: g) a -> (f :.: g) a -> Diff ((f :.: g) a) Source #

patch :: Diff ((f :.: g) a) -> (f :.: g) a -> Maybe ((f :.: g) a) Source #

(Different a, Different b, Different c, Different d, Different e) => Different (a, b, c, d, e) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (a, b, c, d, e) Source #

Methods

diff :: (a, b, c, d, e) -> (a, b, c, d, e) -> Diff (a, b, c, d, e) Source #

patch :: Diff (a, b, c, d, e) -> (a, b, c, d, e) -> Maybe (a, b, c, d, e) Source #

Different (f (g a)) => Different (Compose f g a) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (Compose f g a) Source #

Methods

diff :: Compose f g a -> Compose f g a -> Diff (Compose f g a) Source #

patch :: Diff (Compose f g a) -> Compose f g a -> Maybe (Compose f g a) Source #

(Different a, Different b, Different c, Different d, Different e, Different f) => Different (a, b, c, d, e, f) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (a, b, c, d, e, f) Source #

Methods

diff :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> Diff (a, b, c, d, e, f) Source #

patch :: Diff (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> Maybe (a, b, c, d, e, f) Source #

(Different a, Different b, Different c, Different d, Different e, Different f, Different g) => Different (a, b, c, d, e, f, g) Source # 
Instance details

Defined in Diff

Associated Types

type Diff (a, b, c, d, e, f, g) Source #

Methods

diff :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> Diff (a, b, c, d, e, f, g) Source #

patch :: Diff (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> Maybe (a, b, c, d, e, f, g) Source #

data SumDiff a b Source #

Constructors

DiffL (Diff a) 
DiffR (Diff b) 
LR a b 
RL b a 

Instances

Instances details
(Eq a, Eq b, Eq (Diff a), Eq (Diff b)) => Eq (SumDiff a b) Source # 
Instance details

Defined in Diff

Methods

(==) :: SumDiff a b -> SumDiff a b -> Bool #

(/=) :: SumDiff a b -> SumDiff a b -> Bool #

(Read a, Read b, Read (Diff a), Read (Diff b)) => Read (SumDiff a b) Source # 
Instance details

Defined in Diff

(Show a, Show b, Show (Diff a), Show (Diff b)) => Show (SumDiff a b) Source # 
Instance details

Defined in Diff

Methods

showsPrec :: Int -> SumDiff a b -> ShowS #

show :: SumDiff a b -> String #

showList :: [SumDiff a b] -> ShowS #