úÎ$r ›B      !"#$%&'()*+,-./0123456789:;<=>?@A  BCD    EFGHIJmonadic serialization & deserialization )  !"#$%&'()*+,-./012) '(,+*)-./012 "!$&#%  34@shows the content of a expression, must be defined bu the user 57read the content of a expression, must be user defined 68insert a reference (a variable in the where section). rshowp = insertVar showp  -- default definition 78.use the rshowp parser to serialize the object   rShow c= runW $ rshowp c 9&deserialize trough the rreadp parser   rRead str= runR rreadp $ str :;Dif a is an instance of Read, readSR 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 <'deserialize the string with the parser =>Dif a is an instance of Show, showSR 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 ?serialize x with the parser @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 AQdeserialize a variable serialized with insertVar. Memory references are restored 9  !"#$%&'()*+,-./0123456789:;<=>?@A34567>;89@A<?:=34567456789:;<=>?@AK       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLRefSerialize-0.2.7Data.Serialize Data.ParserData.RefSerializeStatErrorContextShowFVarNameMFunvarNamenumVarST<|>charanyCharupperspacedigitsepBybetweenchoiceoption notFollowedBystringboolmanyparensbracesanglesbracketssemicommadotcoloncommaSepsemiSep commaSep1semiSep1 charLiteral stringLiteralnaturalOrFloatfloatintegernaturaldecimal hexadecimaloctalsymbollexeme whiteSpace SerializeshowpreadprshowprreadprShowrReadreadHexpreadSRrunRshowHexpshowSRrunW insertVarreadVardebug readContexthasht parsecPluslabellabelssepBy1many1 $fMonadST