_Mx[      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ(c) Galois, Inc. 2007-2009BSD3Sigbjorn Finne <sof@galois.com> provisionalportable Safe-Inferred+As can association lists<Strings can be represented a little more efficiently in JSON JSON valuesxThe 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 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:An array structure is represented as square brackets surrounding 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.    (c) Galois, Inc. 2007-2009BSD3Sigbjorn Finne <sof@galois.com> provisionalportable Safe-Inferred Parsing JSON#The type of JSON parsers for String`Run a JSON reader on an input String, returning some Haskell value. All input will be consumed.[(Find 8 chars context, for error messagesRead the JSON null typeRead the JSON Bool typeRead the JSON String type>Read an Integer or Double in JSON format, returning a RationalRead a list in JSON formatRead 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 JSONjShow strict JSON top level types. Values not permitted at the top level are wrapped in a singleton array.Show JSON valuesWrite 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_/Show a generic sequence of pairs in JSON format`&Show a generic sequence in JSON format!abcd[e\] ^!"#$_`fghi !"#$ #$!"abcd[e\] ^!"#$_`fghi(c) Galois, Inc. 2007-2009BSD3Sigbjorn Finne <sof@galois.com> provisionalportable Safe-Inferredj%&'()*+,-klmnop,qrstuvwxyz{|}~%&'()*+,- %&'()*+,-j%&'()*+,-klmnop(c) Galois, Inc. 2007-2009Sigbjorn Finne <sof@galois.com> provisionalportable Safe-Inferred./01234567b./01234567 .01234567/./01234567(c) Galois, Inc. 2007-2009BSD3Sigbjorn Finne <sof@galois.com> provisionalportable Safe-Inferred 89:;<=>?@H      !"#$%&'()*+,-./089:;<=>?@ 89:;<=>?@ 89:;<=>?@(c) Galois, Inc. 2007-2009BSD3Sigbjorn Finne <sof@galois.com> provisionalportable Safe-Inferred24 A7Haskell types that can be used as keys in JSON objects.DA type for parser resultsG0The class of types serialisable to and from JSONLYDecode a String representing a JSON value (either an object, array, bool, number, null)_This is a superset of JSON, as types other than Array and Object are allowed at the top level.M5Encode a Haskell value into a string, in JSON format._This is a superset of JSON, as types other than Array and Object are allowed at the top level.NDecode a String representing a strict JSON value. This follows the spec, and requires top level JSON types to be an Array or Object.OEncode a value as a String in strict JSON format. 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 Eithers1Convenient error generationR"Pull a value out of a JSON object.SEncode an association list as  value.T Decode a  value into an association list.2fTo ensure we generate valid JSON, we map Haskell types to JSValue internally, then pretty print that.EABCDEFGHIJKLMNOP134QR5678ST9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\2]^_`a/  !"#$ABCDEFGHIJKLMNOPQRST1 GHIJKDFEMLONP #!"$QRABCST=ABCDFEGHIJKLMNOP134QR5678ST9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\2]^_`a!(c) Lennart Augustsson, 2008-2009BSD3Sigbjorn Finne <sof@galois.com> provisionalportableNoneFU!Convert anything to a JSON value.WCConvert a JSON value to anything (fails if the types do not match).YEncode a value as a string.ZDecode a string as a value.bcUVWXYZ7  !"#$ABCDEFGHIJKLMNOPQRSTUVWXYZUWYZVXbcUVWXYZd       !"#$%&'()*+,-./0123456.7/012345689:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqprpsptpupvpwpxpypzp{p|p}p~pppppppppppppppppppppjklnosutvwyxz{~|cb}i     e !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL json-0.9.1Text.JSON.GenericText.JSON.TypesText.JSON.StringText.JSON.ReadPText.JSON.ParsecText.JSON.Pretty Text.JSONbase Data.DataDataData.Typeable.InternalTypeableJSObject JSONObject fromJSObjectJSString JSONString fromJSStringJSValueJSArray JSRationalJSBoolJSNull toJSString toJSObject get_field set_fieldGetJSON runGetJSON readJSNull readJSBool readJSStringreadJSRational readJSArray readJSObject readJSValue readJSTopType showJSTopType showJSValue showJSNull showJSBoolshowJSRationalshowJSRational' showJSArray showJSObjectp_valuep_null p_booleanp_arrayp_stringp_objectp_number p_js_string p_js_objectp_jvaluepp_valuepp_null pp_boolean pp_numberpp_array pp_string pp_object pp_js_string pp_js_objectJSKeytoJSKey fromJSKeyResultErrorOkJSONreadJSONshowJSON readJSONs showJSONsdecodeencode decodeStrict encodeStrictresultToEithermakeObj valFromObj encJSDict decJSDicttoJSONtoJSON_genericfromJSONfromJSON_generic encodeJSON decodeJSONcontext readSequence readAssocs showJSString showAssocs showSequenceungetInputsetInput tryJSNull encJSString$fMonadGetJSON$fApplicativeGetJSON$fFunctorGetJSONtoken<**>**><**<||><$$><$$Text.ParserCombinators.ReadP readS_to_P readP_to_SmanyTillchainl1chainr1chainlchainrendBy1endBysepBy1sepBy skipMany1skipManymany1manyoptionaloptionbetweencount skipSpaceschoicemunch1munchstringeofcharsatisfygather<+++++pfaillookgetReadSReadPtok parsec-3.1.8"Text.ParserCombinators.Parsec.Char CharParserText.Parsec.CharanyCharoctDigithexDigitdigitletteralphaNumloweruppertabnewlinespacespacesnoneOfoneOf"Text.ParserCombinators.Parsec.Primtry runParserpzeroText.Parsec.String parseFromFileParser GenParserText.Parsec.Combinator notFollowedByanyTokensepEndBy sepEndBy1 optionMaybeText.Parsec.Prim updateStatesetStategetStatesetParserStategetParserState setPosition getPosition parseTestparse tokenPrimEx tokenPrim lookAheadtokenslabelslabel<|> unexpected stateUserstatePos stateInputStateText.Parsec.ErrorerrorPos ParseErrorText.Parsec.PossetSourceColumn setSourceLine setSourceNameincSourceColumn incSourceLine sourceColumn sourceLine sourceName SourceNameLineColumn SourcePospretty-1.1.1.1Text.PrettyPrint.HughesPJ fullRender renderStylerenderstylefirstfsepfcatcatsep<+><>$+$$$ punctuatehangnestvcathsephcat reduceDocbracesbracketsparens doubleQuotesquotesrationaldoublefloatintegerintrbracelbracerbracklbrackrparenlparenequalscoloncommasemiisEmptyempty zeroWidthText sizedTextptexttextDocChrStrPStr TextDetailsribbonsPerLine lineLengthmodeStylePageMode ZigZagModeLeftMode OneLineModeModemkError $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