-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Visualize the structural differences between two values. -- -- This uses GHC.Generics to provide structural diffs between -- two values in pretty-printed form. This is primarily useful for test -- assertions and manual inspection of values. @package portray-diff @version 0.1.0.0 -- | Typeclass for pretty-printed diffs between two instances of a type. -- -- Derive it for arbitrary sum-of-products types as follows: -- --
--   data Foo = Foo Int | Bar Bool
--     deriving Generic
--     deriving (Portray, Diff) via Wrapped Generic Foo
--   
-- -- If the type of the compared values has a custom Eq instance, the -- equality comparison used by the Generic derived Diff instance *will -- differ* from the custom one implemented for the type. It will only -- check to make sure that the representations of the two types are the -- same. If you still want the diff algorithm to look into the type, you -- will need to implement a custom Diff instance alongside the custom Eq -- instance. If you don't want the diff algorithm to look inside a type, -- and instead use the custom Eq instance, use: -- --
--   data Foo = ...
--   instance Diff Foo where diff = diffAtom
--   
module Data.Portray.Diff class Diff a -- | Returns Nothing when equal; or a Portrayal showing the -- differences. diff :: Diff a => a -> a -> Maybe Portrayal -- | Returns Nothing when equal; or a Portrayal showing the -- differences. diff :: (Diff a, Generic a, GDiff a (Rep a)) => a -> a -> Maybe Portrayal -- | Diff on an atomic type, just by using the Eq and Portray instances -- without using any internal structure of the type. diffAtom :: (Eq a, Portray a) => a -> a -> Maybe Portrayal newtype DiffAtom a DiffAtom :: a -> DiffAtom a diffVs :: Portrayal -> Portrayal -> Portrayal instance Data.Portray.Portray a => Data.Portray.Portray (Data.Portray.Diff.DiffAtom a) instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Portray.Diff.DiffAtom a) instance (Data.Portray.Portray a, Data.Portray.Diff.Diff a) => Data.Portray.Diff.Diff (GHC.Base.NonEmpty a) instance (Data.Portray.Portray a, Data.Portray.Diff.Diff a) => Data.Portray.Diff.Diff (Data.Sequence.Internal.Seq a) instance Data.Portray.Diff.Diff Data.Portray.Assoc instance Data.Portray.Diff.Diff Data.Portray.Infixity instance Data.Portray.Diff.Diff a => Data.Portray.Diff.Diff (Data.Portray.FactorPortrayal a) instance (Data.Portray.Portray a, Data.Portray.Diff.Diff a) => Data.Portray.Diff.Diff (Data.Portray.PortrayalF a) instance (forall a. (Data.Portray.Portray a, Data.Portray.Diff.Diff a) => Data.Portray.Diff.Diff (f a), forall a. Data.Portray.Portray a => Data.Portray.Portray (f a)) => Data.Portray.Diff.Diff (Data.Portray.Fix f) instance Data.Portray.Diff.Diff Data.Portray.Portrayal instance Data.Portray.Diff.Diff a => Data.Portray.Diff.Diff (Data.Functor.Identity.Identity a) instance Data.Portray.Diff.Diff a => Data.Portray.Diff.Diff (Data.Functor.Const.Const a b) instance (GHC.Classes.Eq a, Data.Portray.Portray a) => Data.Portray.Diff.Diff (Data.Portray.Diff.DiffAtom a) instance (GHC.Generics.Generic a, Data.Portray.Diff.GDiff a (GHC.Generics.Rep a)) => Data.Portray.Diff.Diff (Data.Wrapped.Wrapped GHC.Generics.Generic a) instance (GHC.Generics.Selector s, Data.Portray.Diff.Diff a) => Data.Portray.Diff.GDiffRecord (GHC.Generics.S1 s (GHC.Generics.K1 i a)) instance Data.Portray.Diff.Diff a => Data.Portray.Diff.GDiffCtor (GHC.Generics.S1 s (GHC.Generics.K1 i a)) instance Data.Portray.Diff.Diff () instance (Data.Portray.Portray a, Data.Portray.Portray b, Data.Portray.Diff.Diff a, Data.Portray.Diff.Diff b) => Data.Portray.Diff.Diff (a, b) instance (Data.Portray.Portray a, Data.Portray.Portray b, Data.Portray.Portray c, Data.Portray.Diff.Diff a, Data.Portray.Diff.Diff b, Data.Portray.Diff.Diff c) => Data.Portray.Diff.Diff (a, b, c) instance (Data.Portray.Portray a, Data.Portray.Portray b, Data.Portray.Portray c, Data.Portray.Portray d, Data.Portray.Diff.Diff a, Data.Portray.Diff.Diff b, Data.Portray.Diff.Diff c, Data.Portray.Diff.Diff d) => Data.Portray.Diff.Diff (a, b, c, d) instance (Data.Portray.Portray a, Data.Portray.Portray b, Data.Portray.Portray c, Data.Portray.Portray d, Data.Portray.Portray e, Data.Portray.Diff.Diff a, Data.Portray.Diff.Diff b, Data.Portray.Diff.Diff c, Data.Portray.Diff.Diff d, Data.Portray.Diff.Diff e) => Data.Portray.Diff.Diff (a, b, c, d, e) instance (Data.Portray.Portray a, Data.Portray.Portray b, Data.Portray.Diff.Diff a, Data.Portray.Diff.Diff b) => Data.Portray.Diff.Diff (Data.Either.Either a b) instance (Data.Portray.Portray a, Data.Portray.Diff.Diff a) => Data.Portray.Diff.Diff (GHC.Maybe.Maybe a) instance Data.Portray.Diff.Diff GHC.Types.Bool instance Data.Portray.Diff.Diff GHC.Types.Int instance Data.Portray.Diff.Diff GHC.Int.Int8 instance Data.Portray.Diff.Diff GHC.Int.Int16 instance Data.Portray.Diff.Diff GHC.Int.Int32 instance Data.Portray.Diff.Diff GHC.Int.Int64 instance Data.Portray.Diff.Diff GHC.Types.Word instance Data.Portray.Diff.Diff GHC.Word.Word8 instance Data.Portray.Diff.Diff GHC.Word.Word16 instance Data.Portray.Diff.Diff GHC.Word.Word32 instance Data.Portray.Diff.Diff GHC.Word.Word64 instance Data.Portray.Diff.Diff GHC.Types.Char instance Data.Portray.Diff.Diff GHC.Integer.Type.Integer instance Data.Portray.Diff.Diff GHC.Types.Float instance Data.Portray.Diff.Diff GHC.Types.Double instance Data.Portray.Diff.Diff Data.Text.Internal.Text instance (GHC.Classes.Eq a, Data.Portray.Portray a) => Data.Portray.Diff.Diff (GHC.Real.Ratio a) instance (Data.Portray.Portray a, Data.Portray.Diff.Diff a) => Data.Portray.Diff.Diff [a] instance (GHC.Exts.IsList a, Data.Portray.Portray (GHC.Exts.Item a), Data.Portray.Diff.Diff (GHC.Exts.Item a)) => Data.Portray.Diff.Diff (Data.Wrapped.Wrapped GHC.Exts.IsList a) instance (Data.Portray.Portray a, Data.Foldable.Foldable f, Data.Portray.Diff.Diff a) => Data.Portray.Diff.Diff (Data.Wrapped.Wrapped1 Data.Foldable.Foldable f a) instance (Data.Portray.Portray a, Data.Portray.Diff.Diff a) => Data.Portray.Diff.Diff (Data.IntMap.Internal.IntMap a) instance Data.Portray.Diff.Diff (Data.Typeable.Internal.TypeRep a) instance Data.Portray.Diff.Diff Data.Typeable.Internal.SomeTypeRep instance Data.Portray.Diff.Diff (a Data.Type.Equality.:~: b) instance (GHC.TypeLits.KnownSymbol n, Data.Portray.Diff.GDiffRecord f) => Data.Portray.Diff.GDiff a (GHC.Generics.C1 ('GHC.Generics.MetaCons n fx 'GHC.Types.True) f) instance (GHC.TypeLits.KnownSymbol n, Data.Portray.Diff.GDiffCtor f) => Data.Portray.Diff.GDiff a (GHC.Generics.C1 ('GHC.Generics.MetaCons n fx 'GHC.Types.False) f) instance (Data.Portray.Portray a, Data.Portray.Diff.GDiff a f, Data.Portray.Diff.GDiff a g) => Data.Portray.Diff.GDiff a (f GHC.Generics.:+: g) instance Data.Portray.Diff.GDiff a f => Data.Portray.Diff.GDiff a (GHC.Generics.D1 d f) instance Data.Portray.Diff.GDiffCtor GHC.Generics.U1 instance (Data.Portray.Diff.GDiffCtor f, Data.Portray.Diff.GDiffCtor g) => Data.Portray.Diff.GDiffCtor (f GHC.Generics.:*: g) instance (Data.Portray.Diff.GDiffRecord f, Data.Portray.Diff.GDiffRecord g) => Data.Portray.Diff.GDiffRecord (f GHC.Generics.:*: g)