úÎM Döw      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvNone9;˙3return a unique hash identifier for an object the context assures that no StableName used in addrStr is garbage collected, so the hashes are constant and the correspondence address - string remain one to one as long as the context is not garbage collected. Left is returned if it is the first time that addHash is called for that variable˙Vtwo variables that point to the same address will have identical varname (derived from import System.Mem.StableName)varName:: a -> String . The stable names of during the serializing deserializing process are not deleted . This is assured by the pointers in the context, so the hash values remain and the comparison of varNames is correct.monadic serialization       NoneO'monadic serialization & deserializationd !"wxyz#${%&|'}(~)*+,-€./01‚2345ƒ6789:;<=>?@AB„…†C‡ˆ‰Š‹ŒŽ‘’“”•–DEFG—˜™š›œžŸ Ą˘HIJŁKLM¤NOPQR1 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM1 "!#$3%&(-./0152)*4+',BCGFEDHIJKLM6789:;=<?A>@b !"wxyz#${%&|'}(~)*+,-€./01‚2345ƒ6789:;<=>?@AB„…†C‡ˆ‰Š‹ŒŽ‘’“”•–DEFG—˜™š›œžŸ Ą˘HIJŁKLM¤NOPQR!1"0None9;W5insert a reference (a variable in the where section).YÄreturn the serialized list of variable values useful for delayed deserialzation of expresions, in case of dynamic variables were deserialization is done when needed, once the type is known with b[/use the rshowp parser to serialize the object  rShow c= runW $ rshowp c\'deserialize trough the rreadp parser  rRead str= runR rreadp $ str_ęif a is an instance of Show, showpText can be used as the showp method the drawback is that the data inside is not inspected for common references so it is recommended to create your own readp method for your complex data structures`ęif a is an instance of Read, readpText can be used as the readp method the drawback is that the data inside is not inspected for common references so it is recommended to create your own readp method for your complex data structuresa&deserialize the string with the parserbPread an expression with the variables definedd in a context passed as parameter.cserialize x with the parserd/serialize x witn a given context and the parsere^serialize the variables. if the Bool flag is true, it prepend the text with the string "where"f8return the serialization instead of updating the writerglreturn the variable name of the serialized data, which is put in the context and does not update the writerh˙insert a variable at this position. The expression value is inserted in the "where" section if it is not already created. If the address of this object being parsed correspond with an address already parsed and it is in the where section, then the same variable name is used ČrunW showp (1::Int) -> "1" runW (insertVar showp) (1::Int) -> v1 where { v1=1} runW (insertVar showp) [(1::Int) ,1] -> [v1.v1] where { v1=1}; This is useful when the object is referenced many timesĽ<inform if the expression iwas already referenced and return  Right varnameO otherwise, add the expresion to the context and giive it a name and return  Left varname¸ The varname is not added to the serialized expression. The user must serialize it This is usefu for expressions that admit different syntax depending or recursiviity, such are listsiPdeserialize a variable serialized with insertVar. Memory references are restoredjVWrite a String in the serialized output with an added whitespace. Deserializable with Kk1Write a char in the serialized output (no spaces)l0serialize a variable which has a Binary instancem%deserialize a variable serialized by l)STUVWXYZ[\]^_`abŚcde§fghĽijk¨ŠlmnopqrstuvO !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMSTUVWXYZ[\]^_`abcdefghijklmnSTUWXfgac_`lmjk[\hin]^YZVebd'STUVWXYZ[\]^_`abŚcde§fghĽijk¨ŠlmnopqrstuvŞ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨)RefSerialize-0.4.0-2IqFUb9iVTF770g98DtVQwData.RefSerialize.SerializeData.RefSerialize.ParserData.RefSerializeSTWStatWErrorContextShowFExprVarVarNameMFun myToStrictemptyassocsinsertdeletelookuptoListfromListaddrHash readContexthashtvarNamenumVar $fMonadSTW$fApplicativeSTW $fFunctorSTW $fShowShowFSTRStatR<|>charanyCharupperspacedigitoneOfnoneOftry readContentsepBybetweenchoiceoption notFollowedBymanyTillstringboolmanyparensbracesanglesbracketssemicommadotcoloncommaSepsemiSep commaSep1semiSep1 charLiteral stringLiteralnaturalOrFloatfloatintegernaturaldecimal hexadecimaloctalsymbollexeme whiteSpace$fMonadPlusSTR $fMonadSTR$fAlternativeSTR$fApplicativeSTR $fFunctorSTR Serializeshowpreadp newContextrshowprreadp getRContext getWContextrShowrReadreadHexpshowHexp showpText readpTextrunRrunRCrunWrunWC showContextshowpsrshowps insertVarreadVar insertString insertChar showpBinary readpBinarytakep$fSerializeEither$fSerializeMaybe$fSerializeMap$fSerialize(,,,)$fSerialize(,,)$fSerialize(,) $fSerialize[]$fSerialize[]0 parsecPluslabellabelsunexpectedEndOfInputsatisfydigit1octDigithexDigit unexpectedsepBy1 skipMany1skipManymany1 characterChar charEscape charLetter stringChar stringLetter stringEscape escapeEmpty escapeGap escapeCode charControlcharNumcharEsc charAsciiescMapasciiMap ascii2codes ascii3codesascii2ascii3floatingnatFloat zeroNumFloat decimalFloat fractFloat fractExponentfraction exponent'intsignnat zeroNumbernumber simpleSpaceisInVarswhereSepshowExpr binPrefix binPrefixSp