@@ -216,13 +216,21 @@ data Value = Object Object
216216 deriving (Eq, Show, Typeable, Data)
217217
218218instance NFData Value where
219− rnf (Object o) = rnf o
219+ rnf (Object o) = obj_rnf o
220220 rnf (Array a) = V.foldl' (\x y -> rnf y `seq` x) () a
221221 rnf (String s) = rnf s
222222 rnf (Number n) = case n of I i -> rnf i; D d -> rnf d
223223 rnf (Bool b) = rnf b
224224 rnf Null = ()
225225
226+obj_rnf :: (NFData k, NFData v) => Map k v -> ()
227+#if MIN_VERSION_containers(0,4,2)
228+obj_rnf = rnf
229+#else
230+obj_rnf M.Tip = ()
231+obj_rnf (M.Bin _ kx x l r) = rnf kx `seq` rnf x `seq` rnf l `seq` rnf r
232+#endif
233+
226234instance IsString Value where
227235 fromString = String . pack
228236 {-# INLINE fromString #-}