-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Tagged binary serialisation. -- -- Check README on Github @package binary-tagged @version 0.1.5 -- | Structurally tag binary serialisation stream. -- -- Say you have: -- --
-- data Record = Record
-- { _recordFields :: HM.HashMap Text (Integer, ByteString)
-- , _recordEnabled :: Bool
-- }
-- deriving (Eq, Show, Generic)
--
-- instance Binary Record
-- instance HasStructuralInfo Record
-- instance HasSemanticVersion Record
--
--
-- then you can serialise and deserialise Record values with a
-- structure tag by simply
--
-- -- encodeTaggedFile "cachefile" record -- decodeTaggedFile "cachefile" :: IO Record ---- -- If structure of Record changes in between, deserialisation -- will fail early. module Data.Binary.Tagged -- | Binary serialisable class, which tries to be less error-prone -- to data structure changes. -- -- Values are serialised with header consisting of version v and -- hash of structuralInfo. newtype BinaryTagged (v :: k) a BinaryTagged :: a -> BinaryTagged a [unBinaryTagged] :: BinaryTagged a -> a type BinaryTagged' a = BinaryTagged (SemanticVersion a) a binaryTag :: Proxy v -> a -> BinaryTagged v a binaryTag' :: HasSemanticVersion a => a -> BinaryTagged' a binaryUntag :: Proxy v -> BinaryTagged v a -> a binaryUntag' :: HasSemanticVersion a => BinaryTagged' a -> a -- | Data type structure, with (some) nominal information. data StructuralInfo NominalType :: String -> StructuralInfo NominalNewtype :: String -> StructuralInfo -> StructuralInfo StructuralInfo :: String -> [[StructuralInfo]] -> StructuralInfo -- | Tagged version of encode taggedEncode :: forall a. (HasStructuralInfo a, HasSemanticVersion a, Binary a) => a -> ByteString -- | Tagged version of decode taggedDecode :: forall a. (HasStructuralInfo a, HasSemanticVersion a, Binary a) => ByteString -> a -- | Tagged version of decodeOrFail taggedDecodeOrFail :: forall a. (HasStructuralInfo a, HasSemanticVersion a, Binary a) => ByteString -> Either (ByteString, ByteOffset, String) (ByteString, ByteOffset, a) -- | Tagged version of encodeFile taggedEncodeFile :: forall a. (HasStructuralInfo a, HasSemanticVersion a, Binary a) => FilePath -> a -> IO () -- | Tagged version of decodeFile taggedDecodeFile :: forall a. (HasStructuralInfo a, HasSemanticVersion a, Binary a) => FilePath -> IO a -- | Tagged version of decodeFileOrFail taggedDecodeFileOrFail :: forall a. (HasStructuralInfo a, HasSemanticVersion a, Binary a) => FilePath -> IO (Either (ByteOffset, String) a) -- | Type class providing StructuralInfo for each data type. -- -- For regular non-recursive ADTs HasStructuralInfo can be derived -- generically. -- --
-- data Record = Record { a :: Int, b :: Bool, c :: [Char] } deriving (Generic)
-- instance hasStructuralInfo Record
--
--
-- For stable types, you can provide only type name
--
-- -- instance HasStructuralInfo Int where structuralInfo = ghcNominalType -- infer name from Generic information -- instance HasStructuralInfo Integer where structuralInfo _ = NominalType "Integer" ---- -- Recursive type story is a bit sad atm. If the type structure is -- stable, you can do: -- --
-- instance HasStructuralInfo a => HasStructuralInfo [a] where structuralInfo = ghcStructuralInfo1 --class HasStructuralInfo a structuralInfo :: HasStructuralInfo a => Proxy a -> StructuralInfo structuralInfo :: (HasStructuralInfo a, Generic a, All2 HasStructuralInfo (GCode a), GDatatypeInfo a, SListI2 (GCode a)) => Proxy a -> StructuralInfo -- | A helper type family for encodeTaggedFile and -- decodeTaggedFile. -- -- The default definition is SemanticVersion a = 0 class KnownNat (SemanticVersion a) => HasSemanticVersion (a :: *) where { type family SemanticVersion a :: Nat; type SemanticVersion a = 0; } -- | Type the semantic version is serialised with. type Version = Word32 -- | Interleaving -- --
-- 3 | 9 . . . . -- 2 | 5 8 . . . -- 1 | 2 4 7 11 . -- 0 | 0 1 3 6 10 -- ----------------- -- 0 1 2 3 4 ---- -- This can be calculated by f x y = sum ([0..x+y]) + y type Interleave (n :: Nat) (m :: Nat) = SumUpTo (n + m) + m type SumUpTo (n :: Nat) = Div2 (n * (n + 1)) ghcStructuralInfo :: (Generic a, All2 HasStructuralInfo (GCode a), GDatatypeInfo a, SListI2 (GCode a)) => Proxy a -> StructuralInfo ghcNominalType :: (Generic a, GDatatypeInfo a) => Proxy a -> StructuralInfo ghcStructuralInfo1 :: forall f a. (Generic1 f, GDatatypeInfo (f a), HasStructuralInfo a) => Proxy (f a) -> StructuralInfo sopStructuralInfo :: forall a. (Generic a, HasDatatypeInfo a, All2 HasStructuralInfo (Code a)) => Proxy a -> StructuralInfo sopNominalType :: forall a. (Generic a, HasDatatypeInfo a) => Proxy a -> StructuralInfo sopStructuralInfo1 :: forall f a. (Generic (f a), HasDatatypeInfo (f a), HasStructuralInfo a) => Proxy (f a) -> StructuralInfo sopStructuralInfoS :: forall xss. (All2 HasStructuralInfo xss, SListI2 xss) => DatatypeInfo xss -> StructuralInfo sopNominalTypeS :: DatatypeInfo xss -> StructuralInfo sopStructuralInfo1S :: StructuralInfo -> DatatypeInfo xss -> StructuralInfo structuralInfoSha1Digest :: StructuralInfo -> Digest SHA1State structuralInfoSha1ByteStringDigest :: StructuralInfo -> ByteString instance GHC.Generics.Generic Data.Binary.Tagged.StructuralInfo instance GHC.Show.Show Data.Binary.Tagged.StructuralInfo instance GHC.Classes.Ord Data.Binary.Tagged.StructuralInfo instance GHC.Classes.Eq Data.Binary.Tagged.StructuralInfo instance forall k (v :: k). GHC.Generics.Generic1 (Data.Binary.Tagged.BinaryTagged v) instance forall k (v :: k) a. GHC.Generics.Generic (Data.Binary.Tagged.BinaryTagged v a) instance forall k (v :: k). Data.Traversable.Traversable (Data.Binary.Tagged.BinaryTagged v) instance forall k (v :: k). Data.Foldable.Foldable (Data.Binary.Tagged.BinaryTagged v) instance forall k (v :: k). GHC.Base.Functor (Data.Binary.Tagged.BinaryTagged v) instance forall k (v :: k) a. GHC.Read.Read a => GHC.Read.Read (Data.Binary.Tagged.BinaryTagged v a) instance forall k (v :: k) a. GHC.Show.Show a => GHC.Show.Show (Data.Binary.Tagged.BinaryTagged v a) instance forall k (v :: k) a. GHC.Classes.Ord a => GHC.Classes.Ord (Data.Binary.Tagged.BinaryTagged v a) instance forall k (v :: k) a. GHC.Classes.Eq a => GHC.Classes.Eq (Data.Binary.Tagged.BinaryTagged v a) instance (Data.Binary.Tagged.HasSemanticVersion a, Data.Binary.Tagged.HasSemanticVersion b, GHC.TypeNats.KnownNat (Data.Binary.Tagged.SemanticVersion (Data.Either.Either a b))) => Data.Binary.Tagged.HasSemanticVersion (Data.Either.Either a b) instance (Data.Binary.Tagged.HasSemanticVersion a, Data.Binary.Tagged.HasSemanticVersion b, GHC.TypeNats.KnownNat (Data.Binary.Tagged.SemanticVersion (a, b))) => Data.Binary.Tagged.HasSemanticVersion (a, b) instance (Data.Binary.Tagged.HasSemanticVersion a, Data.Binary.Tagged.HasSemanticVersion b, Data.Binary.Tagged.HasSemanticVersion c, GHC.TypeNats.KnownNat (Data.Binary.Tagged.SemanticVersion (a, b, c))) => Data.Binary.Tagged.HasSemanticVersion (a, b, c) instance (Data.Binary.Tagged.HasSemanticVersion a, Data.Binary.Tagged.HasSemanticVersion b, Data.Binary.Tagged.HasSemanticVersion c, Data.Binary.Tagged.HasSemanticVersion d, GHC.TypeNats.KnownNat (Data.Binary.Tagged.SemanticVersion (a, b, c, d))) => Data.Binary.Tagged.HasSemanticVersion (a, b, c, d) instance (Data.Binary.Tagged.HasSemanticVersion k, Data.Binary.Tagged.HasSemanticVersion v, GHC.TypeNats.KnownNat (Data.Binary.Tagged.SemanticVersion (Data.Map.Internal.Map k v))) => Data.Binary.Tagged.HasSemanticVersion (Data.Map.Internal.Map k v) instance (Data.Binary.Tagged.HasSemanticVersion k, Data.Binary.Tagged.HasSemanticVersion v, GHC.TypeNats.KnownNat (Data.Binary.Tagged.SemanticVersion (Data.HashMap.Base.HashMap k v))) => Data.Binary.Tagged.HasSemanticVersion (Data.HashMap.Base.HashMap k v) instance (Data.Binary.Tagged.HasSemanticVersion i, Data.Binary.Tagged.HasSemanticVersion e, GHC.TypeNats.KnownNat (Data.Binary.Tagged.SemanticVersion (GHC.Arr.Array i e))) => Data.Binary.Tagged.HasSemanticVersion (GHC.Arr.Array i e) instance (Data.Binary.Tagged.HasSemanticVersion i, Data.Binary.Tagged.HasSemanticVersion e, GHC.TypeNats.KnownNat (Data.Binary.Tagged.SemanticVersion (Data.Array.Base.UArray i e))) => Data.Binary.Tagged.HasSemanticVersion (Data.Array.Base.UArray i e) instance Data.Binary.Tagged.HasSemanticVersion Data.Binary.Tagged.StructuralInfo instance Data.Binary.Tagged.HasSemanticVersion GHC.Types.Bool instance Data.Binary.Tagged.HasSemanticVersion GHC.Types.Char instance Data.Binary.Tagged.HasSemanticVersion GHC.Types.Int instance Data.Binary.Tagged.HasSemanticVersion GHC.Types.Word instance Data.Binary.Tagged.HasSemanticVersion GHC.Integer.Type.Integer instance Data.Binary.Tagged.HasSemanticVersion GHC.Int.Int8 instance Data.Binary.Tagged.HasSemanticVersion GHC.Int.Int16 instance Data.Binary.Tagged.HasSemanticVersion GHC.Int.Int32 instance Data.Binary.Tagged.HasSemanticVersion GHC.Int.Int64 instance Data.Binary.Tagged.HasSemanticVersion GHC.Word.Word8 instance Data.Binary.Tagged.HasSemanticVersion GHC.Word.Word16 instance Data.Binary.Tagged.HasSemanticVersion GHC.Word.Word32 instance Data.Binary.Tagged.HasSemanticVersion GHC.Word.Word64 instance Data.Binary.Tagged.HasSemanticVersion GHC.Types.Ordering instance Data.Binary.Tagged.HasSemanticVersion GHC.Types.Float instance Data.Binary.Tagged.HasSemanticVersion GHC.Types.Double instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion [a] instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.List.NonEmpty.NonEmpty a) instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (GHC.Base.Maybe a) instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (GHC.Real.Ratio a) instance Data.Binary.Tagged.HasSemanticVersion () instance Data.Binary.Tagged.HasSemanticVersion (Data.Fixed.Fixed a) instance Data.Binary.Tagged.HasSemanticVersion Data.Version.Version instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.Monoid.Sum a) instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.Monoid.Product a) instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.Monoid.Dual a) instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.Monoid.First a) instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.Monoid.Last a) instance Data.Binary.Tagged.HasSemanticVersion Data.Monoid.All instance Data.Binary.Tagged.HasSemanticVersion Data.Monoid.Any instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.Semigroup.Min a) instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.Semigroup.Max a) instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.Semigroup.First a) instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.Semigroup.Last a) instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.Semigroup.WrappedMonoid a) instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.Semigroup.Option a) instance Data.Binary.Tagged.HasSemanticVersion Data.ByteString.Internal.ByteString instance Data.Binary.Tagged.HasSemanticVersion Data.ByteString.Lazy.Internal.ByteString instance Data.Binary.Tagged.HasSemanticVersion GHC.Natural.Natural instance Data.Binary.Tagged.HasSemanticVersion Data.Text.Internal.Text instance Data.Binary.Tagged.HasSemanticVersion Data.Text.Internal.Lazy.Text instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.IntMap.Internal.IntMap a) instance Data.Binary.Tagged.HasSemanticVersion Data.IntSet.Internal.IntSet instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.Sequence.Internal.Seq a) instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.Set.Internal.Set a) instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.HashSet.HashSet a) instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.Vector.Vector a) instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.Vector.Unboxed.Base.Vector a) instance Data.Binary.Tagged.HasSemanticVersion a => Data.Binary.Tagged.HasSemanticVersion (Data.Vector.Storable.Vector a) instance Data.Binary.Tagged.HasSemanticVersion Data.Time.Clock.Internal.UTCTime.UTCTime instance Data.Binary.Tagged.HasSemanticVersion Data.Time.Clock.Internal.DiffTime.DiffTime instance Data.Binary.Tagged.HasSemanticVersion Data.Time.Clock.Internal.UniversalTime.UniversalTime instance Data.Binary.Tagged.HasSemanticVersion Data.Time.Clock.Internal.NominalDiffTime.NominalDiffTime instance Data.Binary.Tagged.HasSemanticVersion Data.Time.Calendar.Days.Day instance Data.Binary.Tagged.HasSemanticVersion Data.Time.LocalTime.Internal.TimeZone.TimeZone instance Data.Binary.Tagged.HasSemanticVersion Data.Time.LocalTime.Internal.TimeOfDay.TimeOfDay instance Data.Binary.Tagged.HasSemanticVersion Data.Time.LocalTime.Internal.LocalTime.LocalTime instance Data.Binary.Tagged.HasSemanticVersion Data.Aeson.Types.Internal.Value instance (Data.Binary.Class.Binary a, Data.Binary.Tagged.HasStructuralInfo a, GHC.TypeNats.KnownNat v) => Data.Binary.Class.Binary (Data.Binary.Tagged.BinaryTagged v a) instance Data.Binary.Tagged.HasStructuralInfo Data.Binary.Tagged.StructuralInfo instance Data.Binary.Tagged.HasStructuralInfo GHC.Types.Bool instance Data.Binary.Tagged.HasStructuralInfo GHC.Types.Char instance Data.Binary.Tagged.HasStructuralInfo GHC.Types.Int instance Data.Binary.Tagged.HasStructuralInfo GHC.Types.Word instance Data.Binary.Tagged.HasStructuralInfo GHC.Integer.Type.Integer instance Data.Binary.Tagged.HasStructuralInfo GHC.Int.Int8 instance Data.Binary.Tagged.HasStructuralInfo GHC.Int.Int16 instance Data.Binary.Tagged.HasStructuralInfo GHC.Int.Int32 instance Data.Binary.Tagged.HasStructuralInfo GHC.Int.Int64 instance Data.Binary.Tagged.HasStructuralInfo GHC.Word.Word8 instance Data.Binary.Tagged.HasStructuralInfo GHC.Word.Word16 instance Data.Binary.Tagged.HasStructuralInfo GHC.Word.Word32 instance Data.Binary.Tagged.HasStructuralInfo GHC.Word.Word64 instance Data.Binary.Tagged.HasStructuralInfo GHC.Types.Ordering instance Data.Binary.Tagged.HasStructuralInfo GHC.Types.Float instance Data.Binary.Tagged.HasStructuralInfo GHC.Types.Double instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo [a] instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.List.NonEmpty.NonEmpty a) instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (GHC.Base.Maybe a) instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (GHC.Real.Ratio a) instance (Data.Binary.Tagged.HasStructuralInfo a, Data.Binary.Tagged.HasStructuralInfo b) => Data.Binary.Tagged.HasStructuralInfo (Data.Either.Either a b) instance (Data.Binary.Tagged.HasStructuralInfo a, Data.Binary.Tagged.HasStructuralInfo b) => Data.Binary.Tagged.HasStructuralInfo (a, b) instance (Data.Binary.Tagged.HasStructuralInfo a, Data.Binary.Tagged.HasStructuralInfo b, Data.Binary.Tagged.HasStructuralInfo c) => Data.Binary.Tagged.HasStructuralInfo (a, b, c) instance (Data.Binary.Tagged.HasStructuralInfo a, Data.Binary.Tagged.HasStructuralInfo b, Data.Binary.Tagged.HasStructuralInfo c, Data.Binary.Tagged.HasStructuralInfo d) => Data.Binary.Tagged.HasStructuralInfo (a, b, c, d) instance Data.Binary.Tagged.HasStructuralInfo () instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.Fixed.Fixed a) instance Data.Binary.Tagged.HasStructuralInfo Data.Fixed.E0 instance Data.Binary.Tagged.HasStructuralInfo Data.Fixed.E1 instance Data.Binary.Tagged.HasStructuralInfo Data.Fixed.E2 instance Data.Binary.Tagged.HasStructuralInfo Data.Fixed.E3 instance Data.Binary.Tagged.HasStructuralInfo Data.Fixed.E6 instance Data.Binary.Tagged.HasStructuralInfo Data.Fixed.E9 instance Data.Binary.Tagged.HasStructuralInfo Data.Fixed.E12 instance Data.Binary.Tagged.HasStructuralInfo Data.Version.Version instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.Monoid.Sum a) instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.Monoid.Product a) instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.Monoid.Dual a) instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.Monoid.First a) instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.Monoid.Last a) instance Data.Binary.Tagged.HasStructuralInfo Data.Monoid.All instance Data.Binary.Tagged.HasStructuralInfo Data.Monoid.Any instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.Semigroup.Min a) instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.Semigroup.Max a) instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.Semigroup.First a) instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.Semigroup.Last a) instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.Semigroup.WrappedMonoid a) instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.Semigroup.Option a) instance Data.Binary.Tagged.HasStructuralInfo Data.ByteString.Internal.ByteString instance Data.Binary.Tagged.HasStructuralInfo Data.ByteString.Lazy.Internal.ByteString instance Data.Binary.Tagged.HasStructuralInfo GHC.Natural.Natural instance Data.Binary.Tagged.HasStructuralInfo Data.Text.Internal.Text instance Data.Binary.Tagged.HasStructuralInfo Data.Text.Internal.Lazy.Text instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.IntMap.Internal.IntMap a) instance Data.Binary.Tagged.HasStructuralInfo Data.IntSet.Internal.IntSet instance (Data.Binary.Tagged.HasStructuralInfo k, Data.Binary.Tagged.HasStructuralInfo v) => Data.Binary.Tagged.HasStructuralInfo (Data.Map.Internal.Map k v) instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.Sequence.Internal.Seq a) instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.Set.Internal.Set a) instance (Data.Binary.Tagged.HasStructuralInfo k, Data.Binary.Tagged.HasStructuralInfo v) => Data.Binary.Tagged.HasStructuralInfo (Data.HashMap.Base.HashMap k v) instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.HashSet.HashSet a) instance (Data.Binary.Tagged.HasStructuralInfo i, Data.Binary.Tagged.HasStructuralInfo e) => Data.Binary.Tagged.HasStructuralInfo (GHC.Arr.Array i e) instance (Data.Binary.Tagged.HasStructuralInfo i, Data.Binary.Tagged.HasStructuralInfo e) => Data.Binary.Tagged.HasStructuralInfo (Data.Array.Base.UArray i e) instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.Vector.Vector a) instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.Vector.Unboxed.Base.Vector a) instance Data.Binary.Tagged.HasStructuralInfo a => Data.Binary.Tagged.HasStructuralInfo (Data.Vector.Storable.Vector a) instance Data.Binary.Tagged.HasStructuralInfo Data.Time.Clock.Internal.UTCTime.UTCTime instance Data.Binary.Tagged.HasStructuralInfo Data.Time.Clock.Internal.DiffTime.DiffTime instance Data.Binary.Tagged.HasStructuralInfo Data.Time.Clock.Internal.UniversalTime.UniversalTime instance Data.Binary.Tagged.HasStructuralInfo Data.Time.Clock.Internal.NominalDiffTime.NominalDiffTime instance Data.Binary.Tagged.HasStructuralInfo Data.Time.Calendar.Days.Day instance Data.Binary.Tagged.HasStructuralInfo Data.Time.LocalTime.Internal.TimeZone.TimeZone instance Data.Binary.Tagged.HasStructuralInfo Data.Time.LocalTime.Internal.TimeOfDay.TimeOfDay instance Data.Binary.Tagged.HasStructuralInfo Data.Time.LocalTime.Internal.LocalTime.LocalTime instance Data.Binary.Tagged.HasStructuralInfo Data.Aeson.Types.Internal.Value instance Data.Binary.Class.Binary Data.Binary.Tagged.StructuralInfo instance forall k (v :: k). GHC.Base.Applicative (Data.Binary.Tagged.BinaryTagged v) instance forall k (v :: k). GHC.Base.Monad (Data.Binary.Tagged.BinaryTagged v) instance forall k a (v :: k). Data.Semigroup.Semigroup a => Data.Semigroup.Semigroup (Data.Binary.Tagged.BinaryTagged v a) instance forall k a (v :: k). GHC.Base.Monoid a => GHC.Base.Monoid (Data.Binary.Tagged.BinaryTagged v a)