@@ -212,13 +212,20 @@ data Value = Object Object
212 deriving (Eq, Show, Typeable, Data)
212 deriving (Eq, Show, Typeable, Data)
214instance NFData Value where
214instance NFData Value where
215− rnf (Object o) = rnf o
215+ rnf (Object o) = obj_rnf o
216 rnf (Array a) = V.foldl' (\x y -> rnf y `seq` x) () a
216 rnf (Array a) = V.foldl' (\x y -> rnf y `seq` x) () a
217 rnf (String s) = rnf s
217 rnf (String s) = rnf s
218 rnf (Number n) = case n of I i -> rnf i; D d -> rnf d
218 rnf (Number n) = case n of I i -> rnf i; D d -> rnf d
219 rnf (Bool b) = rnf b
219 rnf (Bool b) = rnf b
220 rnf Null = ()
220 rnf Null = ()
222+obj_rnf :: (NFData k, NFData v) => Map k v -> ()
223+#if MIN_VERSION_containers(0,4,2)
226+obj_rnf = rnf . M.toList
222instance IsString Value where
229instance IsString Value where
223 fromString = String . pack
230 fromString = String . pack
224 {-# INLINE fromString #-}
231 {-# INLINE fromString #-}