SD U      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTportable provisionalSigbjorn Finne <sof@galois.com>As can association lists =Strings can be represented a little more efficiently in JSON  JSON values 1The type to which we encode Haskell values. There's a set ? of primitives, and a couple of heterogenous collection types.  Objects: ?An object structure is represented as a pair of curly brackets  surrounding zero or more name/'value pairs (or members). A name is a D string. A single colon comes after each name, separating the name : from the value. A single comma separates a value from a  following name. Arrays: AAn array structure is represented as square brackets surrounding G zero or more values (or elements). Elements are separated by commas. ,Only valid JSON can be constructed this way *Turn a Haskell string into a JSON string. -Make JSON object out of an association list. 'Get the value of a field, if it exist. <Set the value of a field. Previous values are overwritten.    portable provisionalSigbjorn Finne <sof@galois.com> EUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  portable provisionalSigbjorn Finne <sof@galois.com> !"#$, !"#$  !"#$  !"#$portable provisionalSigbjorn Finne <sof@galois.com>%&'()*+,-a     %&'()*+,- %&'()*+,- %&'()*+,-portable provisionalSigbjorn Finne <sof@galois.com>. Parsing JSON $The type of JSON parsers for String /DRun a JSON reader on an input String, returning some Haskell value.  All input will be consumed.  !")Find 8 chars context, for error messages #0Read the JSON null type 1Read the JSON Bool type 2Read the JSON String type 3?Read an Integer or Double in JSON format, returning a Rational 4Read a list in JSON format 5Read an object in JSON format $Read a sequence of items %(Read a sequence of JSON labelled fields 6&Read one of several possible JS types 7-Top level JSON can only be Arrays or Objects 8 Writing JSON 7Show strict JSON top level types. Values not permitted 4 at the top level are wrapped in a singleton array. 9Show JSON values :Write the JSON null type ;Write the JSON Bool type &Write the JSON String type <Show a Rational in JSON format =>Show a list in JSON format ?(Show an association list in JSON format '0Show a generic sequence of pairs in JSON format ('Show a generic sequence in JSON format )./0123456789:;<=>?./01234567:;>?<=98./0123456789:;<=>?portable provisionalSigbjorn Finne <sof@galois.com>@A type for parser results ABC1The class of types serialisable to and from JSON DEFGH+Decode a String representing a JSON value / (either an object, array, bool, number, null) 0This is a superset of JSON, as types other than 0 Array and Object are allowed at the top level. I6Encode a Haskell value into a string, in JSON format. 0This is a superset of JSON, as types other than 0 Array and Object are allowed at the top level. J2Decode a String representing a strict JSON value. / This follows the spec, and requires top level & JSON types to be an Array or Object. K2Encode a value as a String in strict JSON format. 0 This follows the spec, and requires all values > at the top level to be wrapped in either an Array or Object. & JSON types to be an Array or Object. LMap Results to Eithers *Convenient error generation +,MN#Pull a value out of a JSON object. -./01BTo ensure we generate valid JSON, we map Haskell types to JSValue % internally, then pretty print that. * 01234569:;<=>?@ABCDEFGHIJKLMN, CDEFG@BAIHKJL0123456:;><=?9MN@BAABCDEFGDEFGHIJKLMNportable provisionalSigbjorn Finne <sof@galois.com>23O"Convert anything to a JSON value. PQDConvert a JSON value to anything (fails if the types do not match). RSEncode a value as a string. TDecode a string as a value. 2 01234569:;<=>?@ABCDEFGHIJKLMNOPQRSTOQSTPROPQRST4       !"#$%&'()*+,-%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWUVXUVYUVZUV[UV\UV]UV^UV_UV`UVaUVbUVcUVdUVeUVfUVgUVhUViUVjUVkUVlUVmUVnUVoUVpUVqUVrUVsUVtUVuUVvUVwUVxUVyUVzUV{UV|UV}UV~UVUVUVUVUVUVUVUVUVUVUVUVUVUVUVUVUVUVUVUVhfhf.       json-0.4.1Text.JSON.GenericText.JSON.TypesText.JSON.PrettyText.JSON.ReadPText.JSON.ParsecText.JSON.String Text.JSONbase Data.DataData Data.TypeableTypeableJSObject JSONObject fromJSObjectJSString JSONString fromJSStringJSValueJSArray JSRationalJSBoolJSNull toJSString toJSObject get_field set_fieldpp_valuepp_null pp_boolean pp_numberpp_array pp_string pp_object pp_js_string pp_js_objectp_valuep_null p_booleanp_arrayp_stringp_objectp_number p_js_string p_js_objectGetJSON runGetJSON readJSNull readJSBool readJSStringreadJSRational readJSArray readJSObject readJSValue readJSTopType showJSTopType showJSValue showJSNull showJSBoolshowJSRationalshowJSRational' showJSArray showJSObjectResultErrorOkJSONreadJSONshowJSON readJSONs showJSONsdecodeencode decodeStrict encodeStrictresultToEithermakeObj valFromObjtoJSONtoJSON_genericfromJSONfromJSON_generic encodeJSON decodeJSONpretty-1.0.1.1Text.PrettyPrint.HughesPJ fullRenderrender renderStylefcatfsepcatsep<+><>$+$$$nest zeroWidthTextptexttextcharisEmptyempty punctuatehangvcathsephcatbracesbracketsparens doubleQuotesquotesrationaldoublefloatintegerintrbracelbracerbracklbrackrparenlparenequalsspacecommacolonsemistyleribbonsPerLine lineLengthmodeStylePageMode ZigZagModeLeftMode OneLineModeModeDocChrStrPStr TextDetailstokenpure<*>*><*<|><$><$Text.ParserCombinators.ReadP readS_to_P readP_to_SmanyTillchainl1chainr1chainlchainrendBy1endBysepBy1sepBy skipMany1skipManymany1manyoptionaloptionbetweencount skipSpaceschoicemunch1munchstringeofsatisfygather<+++++pfaillookgetReadSReadPtok parsec-3.1.0"Text.ParserCombinators.Parsec.Primtry runParserpzero"Text.ParserCombinators.Parsec.Char CharParserText.Parsec.String parseFromFileParser GenParserText.Parsec.Combinator lookAhead notFollowedByanyTokensepEndBy sepEndBy1 optionMaybeText.Parsec.CharanyCharoctDigithexDigitdigitletteralphaNumloweruppertabnewlinespacesnoneOfoneOfText.Parsec.Prim updateStatesetStategetStatesetParserStategetParserStatesetInput setPositiongetInput getPosition parseTestparse tokenPrimEx tokenPrimtokenslabelslabel unexpected stateUserstatePos stateInputStateText.Parsec.ErrorerrorPos ParseErrorText.Parsec.PossetSourceColumn setSourceLine setSourceNameincSourceColumn incSourceLine sourceColumn sourceLine sourceName SourceNameLineColumn SourcePosuncontext isNullLexeme readSequence readAssocs showJSString showAssocs showSequence encJSStringmkErrorsecond arrayFromList decJSString encJSArray decJSArray $fJSONJSValueFT