{-# LANGUAGE CPP #-}
-- | Only provides orphan instances.
module Control.DeepSeq.Containers () where

#if MIN_VERSION_deepseq(1,2,0)
#if !MIN_VERSION_containers(0,4,2)

import Control.DeepSeq (NFData (..))
import Data.Map
import Data.Set
import Data.IntMap
import Data.IntSet
import Data.Tree

instance (NFData k, NFData a) => NFData (Data.Map.Map k a) where
    rnf = rnf . Data.Map.toList

instance NFData a => NFData (Data.Set.Set a) where
    rnf = rnf . Data.Set.toList

instance NFData a => NFData (Data.Tree.Tree a) where
    rnf (Data.Tree.Node r f) = rnf r `seq` rnf f

instance NFData a => NFData (Data.IntMap.IntMap a) where
    rnf = rnf . Data.IntMap.toList

instance NFData Data.IntSet.IntSet where
    rnf = rnf . Data.IntSet.toList

#endif
#endif