SD+V      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUportable 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> EVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  portable provisionalSigbjorn Finne <sof@galois.com> !"#$, !"#$  !"#$  !"#$portable provisionalSigbjorn Finne <sof@galois.com>%&'()*+,-.b     %&'()*+,-. %'()*+,-.& %&'()*+,-.portable provisionalSigbjorn Finne <sof@galois.com>/ Parsing JSON $The type of JSON parsers for String 0DRun a JSON reader on an input String, returning some Haskell value.  All input will be consumed.  !"#)Find 8 chars context, for error messages 1Read the JSON null type $2Read the JSON Bool type 3Read the JSON String type 4?Read an Integer or Double in JSON format, returning a Rational 5Read a list in JSON format 6Read an object in JSON format %Read a sequence of items &(Read a sequence of JSON labelled fields 7&Read one of several possible JS types 8-Top level JSON can only be Arrays or Objects 9 Writing JSON 7Show strict JSON top level types. Values not permitted 4 at the top level are wrapped in a singleton array. :Show 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:;<=>?@/012345678;<?@=>:9/0123456789:;<=>?@portable provisionalSigbjorn Finne <sof@galois.com>AA type for parser results BCD1The class of types serialisable to and from JSON EFGHI+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. J6Encode 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. K2Decode a String representing a strict JSON value. / This follows the spec, and requires top level & JSON types to be an Array or Object. L2Encode 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. MMap Results to Eithers +Convenient error generation ,-NO#Pull a value out of a JSON object. ./012BTo ensure we generate valid JSON, we map Haskell types to JSValue % internally, then pretty print that. * 1234567:;<=>?@ABCDEFGHIJKLMNO, DEFGHACBJILKM1234567;<?=>@:NOACBBCDEFGHEFGHIJKLMNOportable provisionalSigbjorn Finne <sof@galois.com>34P"Convert anything to a JSON value. QRDConvert a JSON value to anything (fails if the types do not match). STEncode a value as a string. UDecode a string as a value. 2 1234567:;<=>?@ABCDEFGHIJKLMNOPQRSTUPRTUQSPQRSTU5       !"#$%&'()*+,-%.&'()*+,-/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXVWYVWZVW[VW\VW]VW^VW_VW`VWaVWbVWcVWdVWeVWfVWgVWhVWiVWjVWkVWlVWmVWnVWoVWpVWqVWrVWsVWtVWuVWvVWwVWxVWyVWzVW{VW|VW}VW~VWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWigig/      json-0.4.4Text.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_objectp_jvalueGetJSON 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.2Text.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.1"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 tryJSNull readSequence readAssocs showJSString showAssocs showSequence encJSStringmkErrorsecond arrayFromList decJSString encJSArray decJSArray $fJSONJSValueFT