úÎ-É+x     &Leon P Smith <leon@melding-monads.com>%A / 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   )must be UTF-8 encoded *must be UTF-8 encoded + renders as true or false , renders as null   !"#$%    !"#$%&Leon P Smith <leon@melding-monads.com>     &Leon P Smith <leon@melding-monads.com>    -      ! "#$%&'()*+,-./01234json-builder-0.2.3Data.Json.BuilderData.Json.Builder.Internal Data.Json.Builder.Implementationbase Data.MonoidmconcatmappendmemptyMonoid CommaMonoidCommaEmptyJsArraytoArrayArrayJsObjecttoObjectObjectJsStringescapeEscapedJsonValuetoJsonrowelement toBuildertoJsonBS toJsonLBS Data.String fromStringblaze-builder-0.3.0.1"Blaze.ByteString.Builder.Char.Utf8'Blaze.ByteString.Builder.Internal.TypesBuilderbytestring-0.9.2.0Data.ByteString.Internal ByteString++ quoteNeeded quoteChar quoteCharW hexEscapechar$fValueHashMap $fValueMap $fValue[]$fJsStringByteString$fJsStringByteString0 $fValueBool $fValue()