@@ -161,20 +161,15 @@ bool False = Encoding "false"
162-- | Encode a series of key/value pairs, separated by commas.
162-- | Encode a series of key/value pairs, separated by commas.
163pairs :: Series -> Encoding
163pairs :: Series -> Encoding
164−pairs = brackets '{' '}'
164+pairs (Value v) = openCurly >< retagEncoding v >< closeCurly
165+pairs Empty = emptyObject_
165{-# INLINE pairs #-}
166{-# INLINE pairs #-}
167−brackets :: Char -> Char -> Series -> Encoding
168−brackets begin end (Value v) = Encoding $
169− char7 begin <> fromEncoding v <> char7 end
170−brackets begin end Empty = Encoding (primBounded (EB.ascii2 (begin,end)) ())
172list :: (a -> Encoding) -> [a] -> Encoding
168list :: (a -> Encoding) -> [a] -> Encoding
173list _ [] = emptyArray_
169list _ [] = emptyArray_
174−list to' (x:xs) = Encoding $
170+list to' (x:xs) = openBracket >< to' x >< commas xs >< closeBracket
175− char7 '[' <> fromEncoding (to' x) <> commas xs <> char7 ']'
177− commas = foldr (\v vs -> char7 ',' <> fromEncoding (to' v) <> vs) mempty
172+ commas = foldr (\v vs -> comma >< to' v >< vs) empty
178{-# INLINE list #-}
173{-# INLINE list #-}
180-- | Encode as JSON object
175-- | Encode as JSON object
@@ -184,7 +179,7 @@ dict
184 -> (forall a. (k -> v -> a -> a) -> a -> m -> a) -- ^ @foldrWithKey@ - indexed fold
179 -> (forall a. (k -> v -> a -> a) -> a -> m -> a) -- ^ @foldrWithKey@ - indexed fold
185 -> m -- ^ container
180 -> m -- ^ container
186 -> Encoding
181 -> Encoding
187−dict encodeKey encodeVal foldrWithKey = brackets '{' '}' . foldrWithKey go mempty
182+dict encodeKey encodeVal foldrWithKey = pairs . foldrWithKey go mempty
189 go k v c = Value (encodeKV k v) <> c
184 go k v c = Value (encodeKV k v) <> c
190 encodeKV k v = retagEncoding (encodeKey k) >< colon >< retagEncoding (encodeVal v)
185 encodeKV k v = retagEncoding (encodeKey k) >< colon >< retagEncoding (encodeVal v)
@@ -196,7 +191,7 @@ data InArray
196infixr 6 >*<
191infixr 6 >*<
197-- | See 'tuple'.
192-- | See 'tuple'.
198(>*<) :: Encoding' a -> Encoding' b -> Encoding' InArray
193(>*<) :: Encoding' a -> Encoding' b -> Encoding' InArray
199−Encoding a >*< Encoding b = Encoding $ a <> char7 ',' <> b
194+a >*< b = retagEncoding a >< comma >< retagEncoding b
200{-# INLINE (>*<) #-}
195{-# INLINE (>*<) #-}
202empty :: Encoding' a
197empty :: Encoding' a