]J[      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZportable provisionalSigbjorn Finne <sof@galois.com> Safe-InferredAs 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> Safe-Inferred H[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  portable provisionalSigbjorn Finne <sof@galois.com> Safe-Inferred !"#$, !"#$  !"#$ !"#$portable provisionalSigbjorn Finne <sof@galois.com> Safe-Inferred%&'()*+,-.b      !"#$%%&'()*+,-. %'()*+,-.&%&'()*+,-.portable provisionalSigbjorn Finne <sof@galois.com> Safe-Inferred/ 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 !/,-0./0&1123456'(789:;<)=>?@*+234/0123456789:;<=>?@/012345678;<?@=>:9/,-0./0&1123456'(789:;<)=>?@*+234portable provisionalSigbjorn Finne <sof@galois.com>None A8Haskell types that can be used as keys in JSON objects. DA type for parser results G1The class of types serialisable to and from JSON L+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. M6Encode 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. N2Decode a String representing a strict JSON value. / This follows the spec, and requires top level & JSON types to be an Array or Object. O2Encode 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. PMap Results to Eithers 5Convenient error generation R#Pull a value out of a JSON object. SEncode an association list as  value. T Decode a ! value into an association list. 6BTo ensure we generate valid JSON, we map Haskell types to JSValue % internally, then pretty print that. EABCDEFGHIJKLMNOP578QR9:;<ST=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`6abcde/ 1234567:;<=>?@ABCDEFGHIJKLMNOPQRST1 GHIJKDFEMLONP1234567;<?=>@:QRABCST=ABCDFEGHIJKLMNOP578QR9:;<ST=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`6abcdeportable provisionalSigbjorn Finne <sof@galois.com>NoneU"Convert anything to a JSON value. WDConvert a JSON value to anything (fails if the types do not match). YEncode a value as a string. ZDecode a string as a value. fgUVWXYZ7 1234567:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZUWYZVXfgUVWXYZh       !"#$%&'()*+,-%.&'()*+,-/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\][\^[\_[\`[\a[\b[\c[\d[\e[\f[\g[\h[\i[\j[\k[\l[\m[\n[\o[\p[\q[\r[\s[\t[\u[\v[\w[\x[\y[\z[\{[\|[\}[\~[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\     / !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKjson-0.7Text.JSON.GenericText.JSON.TypesText.JSON.PrettyText.JSON.ReadPText.JSON.ParsecText.JSON.String Text.JSONbase Data.DataDataData.Typeable.InternalTypeableJSObject 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 showJSObjectJSKeytoJSKey fromJSKeyResultErrorOkJSONreadJSONshowJSON readJSONs showJSONsdecodeencode decodeStrict encodeStrictresultToEithermakeObj valFromObj encJSDict decJSDicttoJSONtoJSON_genericfromJSONfromJSON_generic encodeJSON decodeJSONpretty-1.1.1.0Text.PrettyPrint.HughesPJ fullRender renderStylerenderstylefirstfsepfcatcatsep<+><>$+$$$ punctuatehangnestvcathsephcat reduceDocbracesbracketsparens doubleQuotesquotesrationaldoublefloatintegerintrbracelbracerbracklbrackrparenlparenequalsspacecoloncommasemiisEmptyempty zeroWidthText sizedTextptexttextcharDocChrStrPStr TextDetailsribbonsPerLine lineLengthmodeStylePageMode ZigZagModeLeftMode OneLineModeModetokenpure<*>*><*<|><$><$Text.ParserCombinators.ReadP readS_to_P readP_to_SmanyTillchainl1chainr1chainlchainrendBy1endBysepBy1sepBy skipMany1skipManymany1manyoptionaloptionbetweencount skipSpaceschoicemunch1munchstringeofsatisfygather<+++++pfaillookgetReadSReadPtok parsec-3.1.3"Text.ParserCombinators.Parsec.Primtry runParserpzero"Text.ParserCombinators.Parsec.Char CharParserText.Parsec.String parseFromFileParser GenParserText.Parsec.Combinator notFollowedByanyTokensepEndBy sepEndBy1 optionMaybeText.Parsec.CharanyCharoctDigithexDigitdigitletteralphaNumloweruppertabnewlinespacesnoneOfoneOfText.Parsec.Prim updateStatesetStategetStatesetParserStategetParserStatesetInput setPositiongetInput getPosition parseTestparse tokenPrimEx tokenPrim lookAheadtokenslabelslabel unexpected stateUserstatePos stateInputStateText.Parsec.ErrorerrorPos ParseErrorText.Parsec.PossetSourceColumn setSourceLine setSourceNameincSourceColumn incSourceLine sourceColumn sourceLine sourceName SourceNameLineColumn SourcePoscontext readSequence readAssocs showJSString showAssocs showSequenceun tryJSNull encJSString$fMonadGetJSON$fFunctorGetJSONmkError $fJSONJSValuesecond arrayFromList decJSString encJSArray decJSArray $fJSKey[] $fJSKeyInt$fJSKeyJSString $fJSONText$fJSONByteString$fJSONByteString0 $fJSONIntSet $fJSONArray $fJSONSet $fJSONIntMap $fJSONMap$fJSON[] $fJSON(,,,) $fJSON(,,) $fJSON(,)$fJSON() $fJSONEither $fJSONMaybe $fJSONFloat $fJSONDouble $fJSONInt64 $fJSONInt32 $fJSONInt16 $fJSONInt8 $fJSONWord64 $fJSONWord32 $fJSONWord16 $fJSONWord8 $fJSONWord $fJSONInt $fJSONInteger$fJSONOrdering $fJSONChar $fJSONBool$fJSONJSObject$fJSONJSString $fMonadResult$fMonadPlusResult$fAlternativeResult$fApplicativeResult$fFunctorResultFT