úÎN%EÉe      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdNone.return a unique hash identifier for an object N the context assures that no StableName used in addrStr is garbage collected, D so the hashes are constant and the correspondence address - string D 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 Štwo variables that point to the same address will have identical varname (derived from import System.Mem.StableName)varName:: a -> String T . The stable names of during the serializing deserializing process are not deleted 3 . This is assured by the pointers in the context, F so the hash values remain and the comparison of varNames is correct. emonadic serialization  e      eNonefmonadic serialization & deserialization aghijk !l"m#n$%&'o(p)*+,qr-./0s123456789:;<=tuv>wxyz{|}~€‚ƒ„…†?@AB‡ˆ‰Š‹ŒŽ‘’CDE“FGH”•f1 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH1. !#()*+,0-$%/&"'=>BA@?CDEFGH12345687:<9;_ghijk !l"m#n$%&'o(p)*+,qr-./0s123456789:;<=tuv>wxyz{|}~€‚ƒ„…†?@AB‡ˆ‰Š‹ŒŽ‘’CDE“FGH”•fNoneM6insert a reference (a variable in the where section). O.return the serialized list of variable values d useful for delayed deserialzation of expresions, in case of dynamic variables were deserialization 2 is done when needed, once the type is known with X Q.use the rshowp parser to serialize the object   rShow c= runW $ rshowp c R&deserialize trough the rreadp parser   rRead str= runR rreadp $ str UGif a is an instance of Show, showpText can be used as the showp method M the drawback is that the data inside is not inspected for common references W so it is recommended to create your own readp method for your complex data structures VGif a is an instance of Read, readpText can be used as the readp method M the drawback is that the data inside is not inspected for common references W so it is recommended to create your own readp method for your complex data structures W'deserialize the string with the parser XQread an expression with the variables definedd in a context passed as parameter. Yserialize x with the parser Z0serialize x witn a given context and the parser [Wserialize the variables. if the Bool flag is true, it prepend the text with the string where \9return the serialization instead of updating the writer ]Mreturn the variable name of the serialized data, which is put in the context  and does not update the writer ^Linsert a variable at this position. The expression value is inserted in the where section if it is not already c created. If the address of this object being parsed correspond with an address already parsed and A it is in the where section, then the same variable name is used  6runW showp (1::Int) -> 1 G 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 varname N otherwise, add the expresion to the context and giive it a name and return  Left varname S The varname is not added to the serialized expression. The user must serialize it e This is usefu for expressions that admit different syntax depending or recursiviity, such are lists _Qdeserialize a variable serialized with insertVar. Memory references are restored `VWrite a String in the serialized output with an added whitespace. Deserializable with F a2Write a char in the serialized output (no spaces) b1serialize a variable which has a Binary instance c%deserialize a variable serialized by b *IJ@shows the content of a expression, must be defined bu the user K7read the content of a expression, must be user defined —LMNOPQRSTUVWX˜YZ[™\]^–_`aš›bcdœžŸ ¡¢£O !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdIJKMN\]WYUVbc`aQR^_dSTOPL[XZ(IJK—LMNOPQRSTUVWX˜YZ[™\]^–_`aš›bcdœžŸ ¡¢£¤       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢RefSerialize-0.3.1.0Data.RefSerialize.SerializeData.RefSerialize.ParserData.RefSerializeSTWStatWErrorContextShowFVarExprVarNameMFunemptyassocsinsertdeletelookuptoListfromListaddrHash readContexthashtvarNamenumVarSTRStatR<|>charanyCharupperspacedigitoneOfnoneOftry readContentsepBybetweenchoiceoption notFollowedBymanyTillstringboolmanyparensbracesanglesbracketssemicommadotcoloncommaSepsemiSep commaSep1semiSep1 charLiteral stringLiteralnaturalOrFloatfloatintegernaturaldecimal hexadecimaloctalsymbollexeme whiteSpace Serializeshowpreadp newContextrshowprreadp getRContext getWContextrShowrReadreadHexpshowHexp showpText readpTextrunRrunRCrunWrunWC showContextshowpsrshowps insertVarreadVar insertString insertChar showpBinary readpBinarytakep $fMonadSTW $fMonadSTR parsecPluslabellabelsunexpectedEndOfInputsatisfydigit1octDigithexDigit unexpectedsepBy1 skipMany1skipManymany1 characterChar charEscape charLetter stringChar stringLetter stringEscape escapeEmpty escapeGap escapeCode charControlcharNumcharEsc charAsciiescMapasciiMap ascii2codes ascii3codesascii2ascii3floatingnatFloat zeroNumFloat decimalFloat fractFloat fractExponentfraction exponent'intsignnat zeroNumbernumber simpleSpace$fMonadPlusSTRisInVars!>whereSepshowExpr binPrefix binPrefixSp$fSerializeEither$fSerializeMaybe$fSerializeMap$fSerialize(,,,)$fSerialize(,,)$fSerialize(,) $fSerialize[]$fSerialize[]0