Mj>L      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKportable provisionalDon Stewart <dons@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 provisionalDon Stewart <dons@galois.com> ELMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  portable provisionalDon Stewart <dons@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 Read the JSON null type Read the JSON Bool type Read the JSON String type ?Read an Integer or Double in JSON format, returning a Rational Read a list in JSON format !Read an object in JSON format Read a sequence of items (Read a sequence of JSON labelled fields "&Read one of several possible JS types #-Top level JSON can only be Arrays or Objects $ 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  !"#$%&'()* !"#&'()*%$ !"#$%&'()*portable provisionalDon Stewart <dons@galois.com>+,-./0123,+,-./0123 +,-./0123 +,-./0123portable provisionalDon Stewart <dons@galois.com>456789:;<a     456789:;< 456789:;< 456789:;<portable provisionalDon Stewart <dons@galois.com>=A type for parser results >?@1The class of types serialisable to and from JSON ABCDE+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. F6Encode 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. G2Decode a String representing a strict JSON value. / This follows the spec, and requires top level & JSON types to be an Array or Object. H2Encode 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. IMap Results to Eithers  Convenient error generation !JK#Pull a value out of a JSON object. "BTo ensure we generate valid JSON, we map Haskell types to JSValue % internally, then pretty print that. )  !"%&'()*=>?@ABCDEFGHIJK+ @ABCD=?>FEHG I !"&'()*%JK=?>>?@ABCDABCDEFGHIJK#       !"#$%&'()*+,-./0123456780123456789:;<=>?@ABCDEFGHIJHIKHILHIMHINHIOHIPHIQHIRHISHITHIUHIVHIWHIXHIYHIZHI[HI\HI]HI^HI_HI`HIaHIbHIcHIdHIeHIfHIgHIhHIiHIjHIkHIlHImHInHIoHIpHIqHIrHIsHItHIuHIvHIwHIxHIyHIzHIzHI{HI|HI}HI~HIHIHIHIHIHI[Y[Yr json-0.3.6Text.JSON.TypesText.JSON.PrettyText.JSON.StringText.JSON.ReadPText.JSON.Parsec Text.JSONJSObject 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_objectGetJSON runGetJSON readJSNull readJSBool readJSStringreadJSRational readJSArray readJSObject readJSValue readJSTopType showJSTopType showJSValue showJSNull showJSBoolshowJSRational showJSArray showJSObjectp_valuep_null p_booleanp_arrayp_stringp_objectp_number p_js_string p_js_objectResultErrorOkJSONreadJSONshowJSON readJSONs showJSONsdecodeencode decodeStrict encodeStrictresultToEithermakeObj valFromObjpretty-1.0.1.1Text.PrettyPrint.HughesPJ fullRenderrender renderStylefcatfsepcatsep<+><>$+$$$nest zeroWidthTextptexttextcharisEmptyempty punctuatehangvcathsephcatbracesbracketsparens doubleQuotesquotesrationaldoublefloatintegerintrbracelbracerbracklbrackrparenlparenequalsspacecommacolonsemistyleribbonsPerLine lineLengthmodeStylePageMode ZigZagModeLeftMode OneLineModeModeDocChrStrPStr TextDetailsungetInputsetInput<$>context readSequence readAssocs showJSString showAssocs showSequence encJSStringtokenpure<*>*><*<|><$baseText.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 updateStatesetStategetStatesetParserStategetParserState setPosition getPosition parseTestparse tokenPrimEx tokenPrimtokenslabelslabel unexpected stateUserstatePos stateInputStateText.Parsec.ErrorerrorPos ParseErrorText.Parsec.PossetSourceColumn setSourceLine setSourceNameincSourceColumn incSourceLine sourceColumn sourceLine sourceName SourceNameLineColumn SourcePosmkErrorsecond $fJSONJSValue