úÎNçFJi      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghNone24ÿ7return 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 ÿZtwo 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        Nonei(monadic serialization & deserialization d !jklm"#n$%o&p'q()*+r,s-./0tu1234v56789:;<=>?@AwxyBz{|}~€‚ƒ„…†‡ˆ‰CDEFŠ‹ŒŽ‘’“”•GHI–JKL—˜i™š›1 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL1! "#2$%',-./041()3*&+ABFEDCGHIJKL56789:<;>@=?b !jklm"#n$%o&p'q()*+r,s-./0tu1234v56789:;<=>?@AwxyBz{|}~€‚ƒ„…†‡ˆ‰CDEFŠ‹ŒŽ‘’“”•GHI–JKL—˜i™š› !None24Q5insert a reference (a variable in the where section).SÄ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 \U/use the rshowp parser to serialize the object  rShow c= runW $ rshowp cV'deserialize trough the rreadp parser  rRead str= runR rreadp $ strYê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 structuresZê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 structures[&deserialize the string with the parser\Pread an expression with the variables definedd in a context passed as parameter.]serialize x with the parser^/serialize x witn a given context and the parser_^serialize the variables. if the Bool flag is true, it prepend the text with the string "where"`8return the serialization instead of updating the writeralreturn the variable name of the serialized data, which is put in the context and does not update the writerbÿ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 listscPdeserialize a variable serialized with insertVar. Memory references are restoreddVWrite a String in the serialized output with an added whitespace. Deserializable with Je1Write a char in the serialized output (no spaces)f0serialize a variable which has a Binary instanceg%deserialize a variable serialized by f)MN?shows the content of a expression, must be defined bu the userO6read the content of a expression, must be user definedPQRSTUVWXYZ[\]^_ž`abœcdeŸ fgh¡¢£¤¥¦§¨O !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghMNOQR`a[]YZfgdeUVbchWXSTP_\^'MNOPQRSTUVWXYZ[\]^_ž`abœcdeŸ fgh¡¢£¤¥¦§¨©      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§RefSerialize-0.3.1.4Data.RefSerialize.SerializeData.RefSerialize.ParserData.RefSerializeSTWStatWErrorContextShowFVarExprVarNameMFun myToStrictemptyassocsinsertdeletelookuptoListfromListaddrHash readContexthashtvarNamenumVar $fMonadSTW$fApplicativeSTW $fFunctorSTWSTRStatR<|>charanyCharupperspacedigitoneOfnoneOftry readContentsepBybetweenchoiceoption notFollowedBymanyTillstringboolmanyparensbracesanglesbracketssemicommadotcoloncommaSepsemiSep commaSep1semiSep1 charLiteral stringLiteralnaturalOrFloatfloatintegernaturaldecimal hexadecimaloctalsymbollexeme whiteSpace Serializeshowpreadp newContextrshowprreadp getRContext getWContextrShowrReadreadHexpshowHexp showpText readpTextrunRrunRCrunWrunWC showContextshowpsrshowps insertVarreadVar insertString insertChar showpBinary readpBinarytakep $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$fMonadPlusSTR$fAlternativeSTR$fApplicativeSTR $fFunctorSTRisInVarswhereSepshowExpr binPrefix binPrefixSp$fSerializeEither$fSerializeMaybe$fSerializeMap$fSerialize(,,,)$fSerialize(,,)$fSerialize(,) $fSerialize[]$fSerialize[]0