úÎ1]-R     &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 . 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 ' renders as null G ()*+,-. /!0"1#2345678$9%&:;<=>?@ABCDEF'GHIJKLMN ()*+,-=   ()*+,-. /!0"1#2345678$9%&:;<=>?@ABCDEF'GHIJKLMN&Leon P Smith <leon@melding-monads.com> Safe-Infered     &Leon P Smith <leon@melding-monads.com> Safe-Infered    O      ! "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVjson-builder-0.2.4Data.Json.BuilderData.Json.Builder.Internal Data.Json.Builder.Implementationbase Data.MonoidmconcatmappendmemptyMonoid CommaMonoidCommaEmptyJsArraytoArrayArrayJsObjecttoObjectObjectJsStringescapeEscapedJsonValuetoJsonrowelement toBuildertoJsonBS toJsonLBS Data.String fromStringblaze-builder-0.3.1.0"Blaze.ByteString.Builder.Char.Utf8'Blaze.ByteString.Builder.Internal.TypesBuilderbytestring-0.9.2.1Data.ByteString.Internal ByteString$fValueHashMap $fValueMap $fValueVector $fValue[]$fJsStringByteString$fJsStringByteString0 $fValueBool $fValue()++ quoteNeeded quoteChar quoteCharW hexEscapechar$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