!J>      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(C) 2015 Oleg GrenrusBSD3"Oleg Grenrus <oleg.grenrus@iki.fi>None&',-.245678=>?@ACHSUVX=3 binary-tagged Interleaving k3 | 9 . . . . 2 | 5 8 . . . 1 | 2 4 7 11 . 0 | 0 1 3 6 10 ----------------- 0 1 2 3 4This can be calculated by f x y = sum ([0..x+y]) + y binary-taggedA helper type family for encodeTaggedFile and decodeTaggedFile.The default definition is  a = 0 binary-taggedType class providing  for each data type.For regular non-recursive ADTs  can be derived generically. ndata Record = Record { a :: Int, b :: Bool, c :: [Char] } deriving (Generic) instance hasStructuralInfo Record0For 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"SRecursive type story is a bit sad atm. If the type structure is stable, you can do: _instance HasStructuralInfo a => HasStructuralInfo [a] where structuralInfo = ghcStructuralInfo1 binary-tagged5Data type structure, with (some) nominal information.  binary-tagged-Type the semantic version is serialised with.  binary-taggedR serialisable class, which tries to be less error-prone to data structure changes.8Values are serialised with header consisting of version v and hash of . binary-taggedTagged version of  binary-taggedTagged version of  binary-taggedTagged version of  binary-taggedTagged version of  binary-taggedTagged version of  binary-taggedTagged version of A binary-taggedSince binary-tagged-0.1.4.0D binary-taggedSince binary-tagged-0.1.4.0E binary-taggedSince binary-tagged-0.1.4.0F binary-taggedSince binary-tagged-0.1.4.0G binary-taggedSince binary-tagged-0.1.4.0H binary-taggedSince binary-tagged-0.1.4.0I binary-taggedSince binary-tagged-0.1.4.0J binary-taggedSince binary-tagged-0.1.4.0K binary-taggedSince binary-tagged-0.1.4.0L binary-taggedSince binary-tagged-0.1.4.0M binary-taggedSince binary-tagged-0.1.4.0N binary-taggedSince binary-tagged-0.1.4.0Q binary-taggedSince binary-tagged-0.1.3.0Y binary-taggedSince binary-tagged-0.1.3.0Z binary-taggedSince binary-tagged-0.1.3.0c binary-taggedSince binary-tagged-0.1.3.0d binary-taggedSince binary-tagged-0.1.3.0e binary-taggedSince binary-tagged-0.1.3.0t binary-tagged=Version and structure hash are prepended to serialised stream binary-taggedSince binary-tagged-0.1.4.0 binary-taggedSince binary-tagged-0.1.4.0 binary-taggedSince binary-tagged-0.1.4.0 binary-taggedSince binary-tagged-0.1.4.0 binary-taggedSince binary-tagged-0.1.4.0 binary-taggedSince binary-tagged-0.1.4.0 binary-taggedSince binary-tagged-0.1.4.0 binary-taggedSince binary-tagged-0.1.4.0 binary-taggedSince binary-tagged-0.1.4.0 binary-taggedSince binary-tagged-0.1.4.0 binary-taggedSince binary-tagged-0.1.4.0 binary-taggedSince binary-tagged-0.1.4.0 binary-taggedSince binary-tagged-0.1.3.0 binary-taggedSince binary-tagged-0.1.3.0 binary-taggedSince binary-tagged-0.1.3.0 binary-taggedSince binary-tagged-0.1.3.0 binary-taggedSince binary-tagged-0.1.3.0 binary-taggedSince binary-tagged-0.1.3.0 binary-taggedSince binary-tagged-0.1.3.0 binary-taggedSince binary-tagged-0.1.3.0%   !"#$%     !# "$       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(binary-tagged-0.2-AbFnzaShcUwKiIPJAQm0rxData.Binary.TaggedDiv2SumUpTo InterleaveHasSemanticVersionSemanticVersionHasStructuralInfostructuralInfoStructuralInfo NominalTypeNominalNewtypeVersion BinaryTagged' BinaryTaggedunBinaryTagged binaryTag binaryTag' binaryUntag binaryUntag' taggedEncode taggedDecodetaggedDecodeOrFailtaggedEncodeFiletaggedDecodeFiletaggedDecodeFileOrFailstructuralInfoSha1Digest"structuralInfoSha1ByteStringDigestghcStructuralInfoghcNominalTypeghcStructuralInfo1sopStructuralInfosopStructuralInfoSsopNominalTypesopNominalTypeSsopStructuralInfo1sopStructuralInfo1S$fMonoidBinaryTagged$fSemigroupBinaryTagged$fMonadBinaryTagged$fApplicativeBinaryTagged$fBinaryStructuralInfo$fHasStructuralInfoValue$fHasStructuralInfoLocalTime$fHasStructuralInfoTimeOfDay$fHasStructuralInfoTimeZone$fHasStructuralInfoDay"$fHasStructuralInfoNominalDiffTime $fHasStructuralInfoUniversalTime$fHasStructuralInfoDiffTime$fHasStructuralInfoUTCTime$fHasStructuralInfoVector$fHasStructuralInfoVector0$fHasStructuralInfoVector1$fHasStructuralInfoUArray$fHasStructuralInfoArray$fHasStructuralInfoHashSet$fHasStructuralInfoHashMap$fHasStructuralInfoSet$fHasStructuralInfoSeq$fHasStructuralInfoMap$fHasStructuralInfoIntSet$fHasStructuralInfoIntMap$fHasStructuralInfoText$fHasStructuralInfoText0$fHasStructuralInfoNatural$fHasStructuralInfoByteString$fHasStructuralInfoByteString0$fHasStructuralInfoOption $fHasStructuralInfoWrappedMonoid$fHasStructuralInfoLast$fHasStructuralInfoFirst$fHasStructuralInfoMax$fHasStructuralInfoMin$fHasStructuralInfoAny$fHasStructuralInfoAll$fHasStructuralInfoLast0$fHasStructuralInfoFirst0$fHasStructuralInfoDual$fHasStructuralInfoProduct$fHasStructuralInfoSum$fHasStructuralInfoVersion$fHasStructuralInfoE12$fHasStructuralInfoE9$fHasStructuralInfoE6$fHasStructuralInfoE3$fHasStructuralInfoE2$fHasStructuralInfoE1$fHasStructuralInfoE0$fHasStructuralInfoFixed$fHasStructuralInfo()$fHasStructuralInfo(,,,)$fHasStructuralInfo(,,)$fHasStructuralInfo(,)$fHasStructuralInfoEither$fHasStructuralInfoRatio$fHasStructuralInfoMaybe$fHasStructuralInfoNonEmpty$fHasStructuralInfo[]$fHasStructuralInfoDouble$fHasStructuralInfoFloat$fHasStructuralInfoOrdering$fHasStructuralInfoWord64$fHasStructuralInfoWord32$fHasStructuralInfoWord16$fHasStructuralInfoWord8$fHasStructuralInfoInt64$fHasStructuralInfoInt32$fHasStructuralInfoInt16$fHasStructuralInfoInt8$fHasStructuralInfoInteger$fHasStructuralInfoWord$fHasStructuralInfoInt$fHasStructuralInfoChar$fHasStructuralInfoBool!$fHasStructuralInfoStructuralInfo$fBinaryBinaryTagged$fHasSemanticVersionValue$fHasSemanticVersionLocalTime$fHasSemanticVersionTimeOfDay$fHasSemanticVersionTimeZone$fHasSemanticVersionDay#$fHasSemanticVersionNominalDiffTime!$fHasSemanticVersionUniversalTime$fHasSemanticVersionDiffTime$fHasSemanticVersionUTCTime$fHasSemanticVersionVector$fHasSemanticVersionVector0$fHasSemanticVersionVector1$fHasSemanticVersionHashSet$fHasSemanticVersionSet$fHasSemanticVersionSeq$fHasSemanticVersionIntSet$fHasSemanticVersionIntMap$fHasSemanticVersionText$fHasSemanticVersionText0$fHasSemanticVersionNatural$fHasSemanticVersionByteString$fHasSemanticVersionByteString0$fHasSemanticVersionOption!$fHasSemanticVersionWrappedMonoid$fHasSemanticVersionLast$fHasSemanticVersionFirst$fHasSemanticVersionMax$fHasSemanticVersionMin$fHasSemanticVersionAny$fHasSemanticVersionAll$fHasSemanticVersionLast0$fHasSemanticVersionFirst0$fHasSemanticVersionDual$fHasSemanticVersionProduct$fHasSemanticVersionSum$fHasSemanticVersionVersion$fHasSemanticVersionFixed$fHasSemanticVersion()$fHasSemanticVersionRatio$fHasSemanticVersionMaybe$fHasSemanticVersionNonEmpty$fHasSemanticVersion[]$fHasSemanticVersionDouble$fHasSemanticVersionFloat$fHasSemanticVersionOrdering$fHasSemanticVersionWord64$fHasSemanticVersionWord32$fHasSemanticVersionWord16$fHasSemanticVersionWord8$fHasSemanticVersionInt64$fHasSemanticVersionInt32$fHasSemanticVersionInt16$fHasSemanticVersionInt8$fHasSemanticVersionInteger$fHasSemanticVersionWord$fHasSemanticVersionInt$fHasSemanticVersionChar$fHasSemanticVersionBool"$fHasSemanticVersionStructuralInfo$fHasSemanticVersionUArray$fHasSemanticVersionArray$fHasSemanticVersionHashMap$fHasSemanticVersionMap$fHasSemanticVersion(,,,)$fHasSemanticVersion(,,)$fHasSemanticVersion(,)$fHasSemanticVersionEither$fEqBinaryTagged$fOrdBinaryTagged$fShowBinaryTagged$fReadBinaryTagged$fFunctorBinaryTagged$fFoldableBinaryTagged$fTraversableBinaryTagged$fGenericBinaryTagged$fGeneric1BinaryTagged$fEqStructuralInfo$fOrdStructuralInfo$fShowStructuralInfo$fGenericStructuralInfobinary-0.8.6.0Data.Binary.ClassBinary Data.Binaryencodedecode decodeOrFail encodeFile decodeFiledecodeFileOrFail