refined-0.2.0.0: library/Refined/TH.hs
--------------------------------------------------------------------------------
{-# LANGUAGE DeriveLift #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TemplateHaskell #-}
--------------------------------------------------------------------------------
{-| This module contains orphan 'Lift' instances of types in common libraries
such as 'containers', for more available compile-time checking of predicates.
-}
module Refined.TH () where
--------------------------------------------------------------------------------
import Data.IntMap.Internal (IntMap(..))
import Data.Map.Internal (Map(..))
import Data.Sequence.Internal (Digit(..), Elem(..), FingerTree(..), Node(..), Seq(..), ViewL(..), ViewR(..))
import Data.Set.Internal (Set(..))
import Data.Tree (Tree(..))
import Language.Haskell.TH.Syntax (Lift)
--------------------------------------------------------------------------------
-- [containers]
deriving instance (Lift a) => Lift (IntMap a)
deriving instance (Lift k, Lift v) => Lift (Map k v)
deriving instance (Lift v) => Lift (Set v)
deriving instance (Lift a) => Lift (Elem a)
deriving instance (Lift a) => Lift (Node a)
deriving instance (Lift a) => Lift (Digit a)
deriving instance (Lift a) => Lift (FingerTree a)
deriving instance (Lift a) => Lift (Seq a)
deriving instance (Lift a) => Lift (ViewL a)
deriving instance (Lift a) => Lift (ViewR a)
deriving instance (Lift a) => Lift (Tree a)
--------------------------------------------------------------------------------