UED[      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZportable provisionalSigbjorn Finne <sof@galois.com> Safe-InferedAs 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-Infered H[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  portable provisionalSigbjorn Finne <sof@galois.com> Safe-Infered  !"#$, !"#$  !"#$  !"#$portable provisionalSigbjorn Finne <sof@galois.com> Safe-Infered %&'()*+,-.b     %&'()*+,-. %'()*+,-.& %&'()*+,-.portable provisionalSigbjorn Finne <sof@galois.com> Safe-Infered/ 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. 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 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 =Show a Rational in JSON format ?Show a list in JSON format @(Show an association list in JSON format /0123456789:;<=>?@/0123456789:;<=>?@/012345678;<?@=>:9/0123456789:;<=>?@portable provisionalSigbjorn Finne <sof@galois.com> Safe-Infered 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 R#Pull a value out of a JSON object. SEncode an association list as  value. T Decode a ! value into an association list. BTo ensure we generate valid JSON, we map Haskell types to JSValue % internally, then pretty print that. =ABCDEFGHIJKLMNOPQRST !"#$%&'()*+,-./0123456789:;<=>?/ 1234567:;<=>?@ABCDEFGHIJKLMNOPQRST1 GHIJKDFEMLONP1234567;<?=>@:QRABCST5ABCDFEGHIJKLMNOPQRST !"#$%&'()*+,-./0123456789:;<=>?portable provisionalSigbjorn Finne <sof@galois.com> Safe-InferedU"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. UVWXYZ7 1234567:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZUWYZVXUVWXYZ@       !"#$%&'()*+,-%.&'()*+,-/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[\{[\|[\}[\~[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\[\      !"#$%&'()*+,-./012json-0.5Text.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 OneLineModeModeText.ParserCombinators.ReadP readS_to_P readP_to_SmanyTillchainl1chainr1chainlchainrendBy1endBysepBy1sepBy skipMany1skipManymany1manyoptionaloptionbetweencount skipSpaceschoicemunch1munchstringeofsatisfygather<+++++pfaillookgetReadSReadP parsec-3.1.2"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 tokenPrimtoken lookAheadtokenslabelslabel<|> unexpected stateUserstatePos stateInputStateText.Parsec.ErrorerrorPos ParseErrorText.Parsec.PossetSourceColumn setSourceLine setSourceNameincSourceColumn incSourceLine sourceColumn sourceLine sourceName SourceNameLineColumn SourcePos$fMonadGetJSON$fFunctorGetJSON $fJSONJSValue $fJSKey[] $fJSKeyInt$fJSKeyJSString$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$fFunctorResult