úÎ3o.ü     &Leon P Smith <leon@melding-monads.com>NoneA / inserts commas between builders. In order to  satisify the  identity laws,  must be distinguished  from  ". To demonstrate the difference:    mconcat ["foo", "" , "bar"] == "foo,,bar"  mconcat ["foo" , Empty , "bar"] == "foo,bar" #The strings in this example denote  CommaMonoids via   = Comma . . Thus "" is equivalent  to  Comma mempty. The  = type represents syntax for a json array. It has been given  a singleton constructor  and an instance of  , so that   represents the empty array and  concatinates two arrays. < Arbitrary arrays can be constructed using these operators. The  ? type represents syntax for a json object. It has a singleton  constructor , and an instance of  , so that  represents  the empty object and . concatinates two objects. Arbitrary objects + can be constructed using these operators. GNote that duplicate field names will appear in the output, so it is up ? to the user of this interface to avoid duplicate field names. The 9 typeclass represents types that can be render into json K string syntax. They are special because only strings can appear as field  names of json objects. The : type represents json string syntax. The purpose of this K type is so that json strings can be efficiently constructed from multiple D Haskell strings without superfluous conversions or concatinations. Internally, it is just a * value which must produce a UTF-8 encoded M bytestring with backslashes, quotes, and control characters appropriately I escaped. It also must not render the opening or closing quote, which  are instead rendered by . The ; type represents valid json syntax. It cannot be directly + analyzed, however it can be turned into a  via ,  a (lazy)   via  or , or used as a  component of a json   or json   using  or . The 1 typeclass represents types that can be rendered  into valid json syntax. The 9 function constructs a json object consisting of exactly 5 one field. These objects can be concatinated using . The 8 function constructs a json array consisting of exactly 4 one value. These arrays can be concatinated using . this renders as Json's null value. !renders as an   "renders as an   #renders as an   $renders as an   %renders as an   &renders as an   'renders as an   (renders as an   )must be UTF-8 encoded *must be UTF-8 encoded + renders as true or false O ,-./01!2"3#4$56%7&8'9(:;<=>?@)A*+BCDEFGHIJKLMNOPQRSTUV ,-./01E   ,-./01!2"3#4$56%7&8'9(:;<=>?@)A*+BCDEFGHIJKLMNOPQRSTUV&Leon P Smith <leon@melding-monads.com>None     &Leon P Smith <leon@melding-monads.com>None    W      !" !#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^json-builder-0.3Data.Json.BuilderData.Json.Builder.Internal Data.Json.Builder.Implementationbase Data.MonoidmconcatmappendmemptyMonoid CommaMonoidCommaEmptyJsArraytoArrayArrayJsObjecttoObjectObjectJsStringescapeEscapedJsonValuetoJsonrowelement toBuildertoJsonBS toJsonLBSjsNull Data.String fromStringblaze-builder-0.3.1.0"Blaze.ByteString.Builder.Char.Utf8'Blaze.ByteString.Builder.Internal.TypesBuilderbytestring-0.10.0.2Data.ByteString.Internal ByteString $fValue(,,,) $fValue(,,) $fValue(,) $fValue()$fValueHashMap $fValueMap $fValueVector $fValue[]$fJsStringByteString$fJsStringByteString0 $fValueBool++ quoteNeeded quoteChar quoteCharW hexEscapechar$fJsArray(,,,) $fJsArray(,,) $fJsArray() $fJsArray(,)$fJsObjectHashMap $fJsObjectMap$fJsArrayVector $fJsArray[] $fValue[]0 $fJsString[] $fValueText$fJsStringText $fValueText0$fJsStringText0$fValueByteString$fValueByteString0 $fValueFloat $fValueDouble $fValueWord64 $fValueWord32 $fValueWord16 $fValueWord8 $fValueWord$fValueInteger $fValueInt64 $fValueInt32 $fValueInt16 $fValueInt8 $fValueInt$fMonoidCommaMonoid$fJsArrayArray $fValueArray$fJsObjectObject $fValueObject$fJsStringEscaped$fValueEscaped $fValueJson