úÎ-z+     &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", Comma mempty, "bar"] == "foo,,bar"  mconcat ["foo", Empty , "bar"] == "foo,bar" FNote that this example abuses notation somewhat, treating Builders as  strings using the injection  = Comma .  The = type represents syntax for a json array. It has been given  a singleton constructor element 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 row, and an instance of  , so that  represents the  empty object and 2 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  : 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  @ typeclass represents types that can be render into json string J syntax. They are special because only strings can appear as field names  of json objects. The ; type represents valid json syntax. It cannot be directly + analyzed, however it can be turned into a  via  toBuilder,  a (lazy)  via toJsonBS or  toJsonLBS, or used as a component  of a json  or json   using element or row. The 1 typeclass represents types that can be rendered  into valid json syntax.        &Leon P Smith <leon@melding-monads.com>!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     .        !"#$%&&'()*+,-./0123json-builder-0.2.2Data.Json.BuilderData.Json.Builder.Internalbase Data.MonoidmconcatmappendmemptyMonoid CommaMonoidCommaEmptyArrayObjectEscapedJsStringescapeJsonValuetoJsonJsArraytoArrayJsObjecttoObject toBuildertoJsonBS toJsonLBSrowelement Data.String fromStringblaze-builder-0.3.0.1"Blaze.ByteString.Builder.Char.Utf8'Blaze.ByteString.Builder.Internal.TypesBuilderbytestring-0.9.1.10Data.ByteString.Internal ByteString++ quoteNeeded quoteChar quoteCharW hexEscapechar$fValueHashMap $fValueMap $fValue[]$fJsStringByteString$fJsStringByteString0 $fValueBool $fValue()