@@ -212,13 +212,20 @@ data Value = Object Object
212212 deriving (Eq, Show, Typeable, Data)
213213
214214instance NFData Value where
215− rnf (Object o) = rnf o
215+ rnf (Object o) = obj_rnf o
216216 rnf (Array a) = V.foldl' (\x y -> rnf y `seq` x) () a
217217 rnf (String s) = rnf s
218218 rnf (Number n) = case n of I i -> rnf i; D d -> rnf d
219219 rnf (Bool b) = rnf b
220220 rnf Null = ()
221221
222+obj_rnf :: (NFData k, NFData v) => Map k v -> ()
223+#if MIN_VERSION_containers(0,4,2)
224+obj_rnf = rnf
225+#else
226+obj_rnf = rnf . M.toList
227+#endif
228+
222229instance IsString Value where
223230 fromString = String . pack
224231 {-# INLINE fromString #-}