tagged 0.8.6.1 → 0.8.10
raw patch · 5 files changed
Files
- CHANGELOG.markdown +27/−0
- old/Data/Proxy.hs +0/−279
- src/Data/Proxy/TH.hs +20/−32
- src/Data/Tagged.hs +27/−93
- tagged.cabal +28/−44
CHANGELOG.markdown view
@@ -1,3 +1,30 @@+0.8.10 [2025.12.07]+-------------------+* Deprecate `Data.Proxy.TH.{pr,pr1}`, as their functionality has been subsumed+ by using `Proxy` with `TypeApplications` syntax. For instance, uses of+ `[pr|T|]` should be migrated to `Proxy @T`. `Data.Proxy.TH` will be removed+ in the next `tagged` release.+* Allow disabling the `template-haskell` dependency by disabling a `cabal` flag+ of the same name.+* Support building with MicroHs.++0.8.9 [2024.12.03]+------------------+* Allow building with GHC 9.12.+* Drop support for GHC 7.10 and earlier.++0.8.8 [2023.08.08]+------------------+* Allow building with GHC 9.8.++0.8.7 [2023.02.18]+------------------+* Define `Foldable1` and `Bifoldable1` instances for `Tagged`. These instances+ were originally defined in the `semigroupoids` library, and they have now+ been migrated to `tagged` as a side effect of adapting to+ [this Core Libraries Proposal](https://github.com/haskell/core-libraries-committee/issues/9),+ which adds `Foldable1` and `Bifoldable1` to `base`.+ 0.8.6.1 [2020.12.28] -------------------- * Mark all modules as explicitly Safe or Trustworthy.
− old/Data/Proxy.hs
@@ -1,279 +0,0 @@-{-# LANGUAGE CPP #-}-#ifdef LANGUAGE_DeriveDataTypeable-{-# LANGUAGE DeriveDataTypeable #-}-#endif-#if __GLASGOW_HASKELL__ >= 706-{-# LANGUAGE KindSignatures #-}-{-# LANGUAGE PolyKinds #-}-#endif-#if __GLASGOW_HASKELL__ >= 707-{-# LANGUAGE StandaloneDeriving #-}-#endif-#if __GLASGOW_HASKELL__ >= 702-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE EmptyDataDecls #-}-{-# LANGUAGE Trustworthy #-}-{-# LANGUAGE TypeFamilies #-}-#endif-{-# OPTIONS_GHC -fno-warn-orphans #-}-------------------------------------------------------------------------------- |--- Module : Data.Proxy--- Copyright : 2009-2013 Edward Kmett--- License : BSD3------ Maintainer : Edward Kmett <ekmett@gmail.com>--- Stability : experimental--- Portability : portable------------------------------------------------------------------------------------module Data.Proxy- (- -- * Proxy values- Proxy(..)- , asProxyTypeOf- , KProxy(..)- ) where--import Control.Applicative (Applicative(..), Alternative(..))-import Control.Monad (MonadPlus(..))-#if MIN_VERSION_base(4,4,0)-import Control.Monad.Zip (MonadZip(..))-#endif-#ifdef MIN_VERSION_deepseq-import Control.DeepSeq (NFData(..))-#endif-#ifdef MIN_VERSION_transformers-import Data.Functor.Classes (Eq1(..), Ord1(..), Read1(..), Show1(..))-#endif-import Data.Traversable (Traversable(..))-import Data.Foldable (Foldable(..))-import Data.Ix (Ix(..))-import Data.Monoid-#ifdef __GLASGOW_HASKELL__-import GHC.Arr (unsafeIndex, unsafeRangeSize)-import Data.Data-#if __GLASGOW_HASKELL__ >= 702-import GHC.Generics hiding (Fixity(..))-#endif-#endif--#if __GLASGOW_HASKELL__ >= 707-deriving instance Typeable Proxy-#else-data Proxy s = Proxy-#if __GLASGOW_HASKELL__ >= 702- deriving Generic---- We have to implement the Generic1 instance manually due to an old--- bug in GHC 7.6. This is mostly copied from the output of------ deriving instance Generic1 Proxy------ Compiled with -ddump-deriv on a more recent GHC.-instance Generic1 Proxy where- type Rep1 Proxy = D1 ProxyMetaData (C1 ProxyMetaCons U1)- from1 Proxy = M1 (M1 U1)- to1 (M1 (M1 U1)) = Proxy--data ProxyMetaData-data ProxyMetaCons--instance Datatype ProxyMetaData where- datatypeName _ = "Proxy"- moduleName _ = "Data.Proxy"--instance Constructor ProxyMetaCons where- conName _ = "Proxy"-#endif-#endif--instance Eq (Proxy s) where- _ == _ = True--instance Ord (Proxy s) where- compare _ _ = EQ--instance Show (Proxy s) where- showsPrec _ _ = showString "Proxy"--instance Read (Proxy s) where- readsPrec _ = readParen False (\r -> [(Proxy, s) | ("Proxy",s) <- lex r ])--#ifdef __GLASGOW_HASKELL__-#if __GLASGOW_HASKELL__ < 707-instance Typeable1 Proxy where- typeOf1 _ = mkTyConApp proxyTyCon []--proxyTyCon :: TyCon-#if __GLASGOW_HASKELL__ < 704-proxyTyCon = mkTyCon "Data.Proxy.Proxy"-#else-proxyTyCon = mkTyCon3 "tagged" "Data.Proxy" "Proxy"-#endif-{-# NOINLINE proxyTyCon #-}-#endif--instance Data s => Data (Proxy s) where- gfoldl _ z _ = z Proxy- toConstr _ = proxyConstr- gunfold _ z c = case constrIndex c of- 1 -> z Proxy- _ -> error "gunfold"- dataTypeOf _ = proxyDataType- dataCast1 f = gcast1 f--proxyConstr :: Constr-proxyConstr = mkConstr proxyDataType "Proxy" [] Prefix-{-# NOINLINE proxyConstr #-}--proxyDataType :: DataType-proxyDataType = mkDataType "Data.Proxy.Proxy" [proxyConstr]-{-# NOINLINE proxyDataType #-}-#endif--instance Enum (Proxy s) where- succ _ = error "Proxy.succ"- pred _ = error "Proxy.pred"- fromEnum _ = 0- toEnum 0 = Proxy- toEnum _ = error "Proxy.toEnum: 0 expected"- enumFrom _ = [Proxy]- enumFromThen _ _ = [Proxy]- enumFromThenTo _ _ _ = [Proxy]- enumFromTo _ _ = [Proxy]--instance Ix (Proxy s) where- range _ = [Proxy]- index _ _ = 0- inRange _ _ = True- rangeSize _ = 1-#ifdef __GLASGOW_HASKELL__- unsafeIndex _ _ = 0- unsafeRangeSize _ = 1-#endif--instance Bounded (Proxy s) where- minBound = Proxy- maxBound = Proxy--#ifdef MIN_VERSION_deepseq-instance NFData (Proxy s) where- rnf Proxy = ()-#endif--#ifdef MIN_VERSION_transformers-# if MIN_VERSION_transformers(0,4,0) && !(MIN_VERSION_transformers(0,5,0))-instance Eq1 Proxy where- eq1 = (==)--instance Ord1 Proxy where- compare1 = compare--instance Read1 Proxy where- readsPrec1 = readsPrec--instance Show1 Proxy where- showsPrec1 = showsPrec-# else-instance Eq1 Proxy where- liftEq _ _ _ = True--instance Ord1 Proxy where- liftCompare _ _ _ = EQ--instance Show1 Proxy where- liftShowsPrec _ _ _ _ = showString "Proxy"--instance Read1 Proxy where- liftReadsPrec _ _ _ =- readParen False (\r -> [(Proxy, s) | ("Proxy",s) <- lex r ])-# endif-#endif--instance Functor Proxy where- fmap _ _ = Proxy- {-# INLINE fmap #-}--instance Applicative Proxy where- pure _ = Proxy- {-# INLINE pure #-}- _ <*> _ = Proxy- {-# INLINE (<*>) #-}--instance Alternative Proxy where- empty = Proxy- {-# INLINE empty #-}- _ <|> _ = Proxy- {-# INLINE (<|>) #-}--instance Monoid (Proxy s) where- mempty = Proxy- {-# INLINE mempty #-}- mappend _ _ = Proxy- {-# INLINE mappend #-}- mconcat _ = Proxy- {-# INLINE mconcat #-}--instance Monad Proxy where- return _ = Proxy- {-# INLINE return #-}- _ >>= _ = Proxy- {-# INLINE (>>=) #-}--instance MonadPlus Proxy where- mzero = Proxy- {-# INLINE mzero #-}- mplus _ _ = Proxy- {-# INLINE mplus #-}--#if MIN_VERSION_base(4,4,0)-instance MonadZip Proxy where- mzipWith _ _ _ = Proxy- {-# INLINE mzipWith #-}-#endif--instance Foldable Proxy where- foldMap _ _ = mempty- {-# INLINE foldMap #-}- fold _ = mempty- {-# INLINE fold #-}- foldr _ z _ = z- {-# INLINE foldr #-}- foldl _ z _ = z- {-# INLINE foldl #-}- foldl1 _ _ = error "foldl1: Proxy"- {-# INLINE foldl1 #-}- foldr1 _ _ = error "foldr1: Proxy"- {-# INLINE foldr1 #-}--instance Traversable Proxy where- traverse _ _ = pure Proxy- {-# INLINE traverse #-}- sequenceA _ = pure Proxy- {-# INLINE sequenceA #-}- mapM _ _ = return Proxy- {-# INLINE mapM #-}- sequence _ = return Proxy- {-# INLINE sequence #-}---- | 'asProxyTypeOf' is a type-restricted version of 'const'.--- It is usually used as an infix operator, and its typing forces its first--- argument (which is usually overloaded) to have the same type as the tag--- of the second.-asProxyTypeOf :: a -> proxy a -> a-asProxyTypeOf = const-{-# INLINE asProxyTypeOf #-}---- | A concrete, promotable proxy type, for use at the kind level--- There are no instances for this because it is intended at the kind level only-data KProxy-#if __GLASGOW_HASKELL__ >= 706- (t :: *)-#else- t-#endif- = KProxy-#if defined(LANGUAGE_DeriveDataTypeable)- deriving Typeable-#endif
src/Data/Proxy/TH.hs view
@@ -1,44 +1,27 @@ {-# LANGUAGE CPP #-}+{-# LANGUAGE TemplateHaskellQuotes #-} #ifndef MIN_VERSION_template_haskell #define MIN_VERSION_template_haskell(x,y,z) 1 #endif -- template-haskell is only safe since GHC-8.2 #if __GLASGOW_HASKELL__ >= 802 {-# LANGUAGE Safe #-}-#elif __GLASGOW_HASKELL__ >= 702+#else {-# LANGUAGE Trustworthy #-} #endif module Data.Proxy.TH ( pr-#if MIN_VERSION_template_haskell(2,8,0) , pr1-#endif ) where import Data.Char-#if __GLASGOW_HASKELL__ < 710-import Data.Functor-#endif-#if __GLASGOW_HASKELL__ < 707-import Data.Version (showVersion)-import Paths_tagged-#endif+import Data.Proxy (Proxy(..)) import Language.Haskell.TH import Language.Haskell.TH.Quote-import Language.Haskell.TH.Syntax proxy_d, proxy_tc :: Name-#if __GLASGOW_HASKELL__ >= 707-proxy_d = mkNameG_d "base" "Data.Proxy" "Proxy"-proxy_tc = mkNameG_tc "base" "Data.Proxy" "Proxy"-#else-proxy_d = mkNameG_d taggedPackageKey "Data.Proxy" "Proxy"-proxy_tc = mkNameG_tc taggedPackageKey "Data.Proxy" "Proxy"---- note: On 7.10+ this would use CURRENT_PACKAGE_KEY if we still housed the key.-taggedPackageKey :: String-taggedPackageKey = "tagged-" ++ showVersion version-#endif+proxy_d = 'Proxy+proxy_tc = ''Proxy proxyTypeQ :: TypeQ -> TypeQ proxyTypeQ t = appT (conT proxy_tc) t@@ -54,39 +37,44 @@ -- @Proxy :: Proxy [A,B,C]@. -- TODO: parse a richer syntax for the types involved here so we can include spaces, applications, etc.+{-# DEPRECATED+ pr+ [ "'pr' will be removed in the next release. Use 'Proxy' with @TypeApplications@ instead. "+ , "Instead of using @[pr|T|]@, use @Proxy \\@T@ instead. "+ , "Instead of using @[pr|A,B,C|]@, use @Proxy \\@[A,B,C]@ instead. "+ ] #-} pr :: QuasiQuoter pr = QuasiQuoter (mkProxy proxyExpQ) (mkProxy proxyPatQ) (mkProxy proxyTypeQ) undefined where mkProxy :: (TypeQ -> r) -> String -> r mkProxy p s = case ts of [h@(t:_)]- | isUpper t -> p $ head <$> cons+ | isUpper t -> p $ conT $ mkName h | otherwise -> p $ varT $ mkName h-#if MIN_VERSION_template_haskell(2,8,0) _ -> p $ mkList <$> cons-#endif- where + where ts = map strip $ splitOn ',' s cons = mapM (conT . mkName) ts-#if MIN_VERSION_template_haskell(2,8,0) mkList = foldr (AppT . AppT PromotedConsT) PromotedNilT-#endif -#if MIN_VERSION_template_haskell(2,8,0) -- | Like 'pr', but takes a single type, which is used to produce a -- 'Proxy' for a single-element list containing only that type. This -- is useful for passing a single type to a function that wants a list -- of types. -- TODO: parse a richer syntax for the types involved here so we can include spaces, applications, etc.+{-# DEPRECATED+ pr1+ [ "'pr1' will be removed in the next release. Use 'Proxy' with @TypeApplications@ instead. "+ , "Instead of using @[pr1|T|]@, use @Proxy \\@'[T]@ instead. "+ ] #-} pr1 :: QuasiQuoter pr1 = QuasiQuoter (mkProxy proxyExpQ) (mkProxy proxyPatQ) (mkProxy proxyTypeQ) undefined where sing x = AppT (AppT PromotedConsT x) PromotedNilT mkProxy p s = case s of- t:_ + t:_ | isUpper t -> p (fmap sing (conT $ mkName s)) | otherwise -> p (fmap sing (varT $ mkName s)) _ -> error "Empty string passed to pr1"-#endif -- | Split on a delimiter. splitOn :: Eq a => a -> [a] -> [[a]]@@ -94,7 +82,7 @@ go [] = [] go xs = case t of [] -> [h]- (_:t') -> h : go t' + (_:t') -> h : go t' where (h,t) = break (== d) xs -- | Remove white space from both ends of a 'String'.
src/Data/Tagged.hs view
@@ -1,21 +1,9 @@ {-# LANGUAGE CPP #-}-#ifdef LANGUAGE_DeriveDataTypeable-{-# LANGUAGE DeriveDataTypeable #-}-#endif-#if __GLASGOW_HASKELL__ >= 706-{-# LANGUAGE PolyKinds #-}-#endif-#if __GLASGOW_HASKELL__ >= 702 {-# LANGUAGE DeriveGeneric #-}-#endif--- manual generics instances are not safe-#if __GLASGOW_HASKELL__ >= 707+{-# LANGUAGE PolyKinds #-} {-# LANGUAGE Safe #-}-#elif __GLASGOW_HASKELL__ >= 702-{-# LANGUAGE Trustworthy #-}-#endif -{-# OPTIONS_GHC -fno-warn-deprecations #-}+{-# OPTIONS_GHC -Wno-deprecations #-} ---------------------------------------------------------------------------- -- | -- Module : Data.Tagged@@ -46,51 +34,40 @@ , reproxy ) where -#if MIN_VERSION_base(4,8,0)+#if !(MIN_VERSION_base(4,18,0)) import Control.Applicative (liftA2)-#else-import Control.Applicative ((<$>), liftA2, Applicative(..))-import Data.Traversable (Traversable(..))-import Data.Monoid #endif import Data.Bits import Data.Foldable (Foldable(..)) #ifdef MIN_VERSION_deepseq import Control.DeepSeq (NFData(..)) #endif-#ifdef MIN_VERSION_transformers import Data.Functor.Classes ( Eq1(..), Ord1(..), Read1(..), Show1(..)-# if !(MIN_VERSION_transformers(0,4,0)) || MIN_VERSION_transformers(0,5,0) , Eq2(..), Ord2(..), Read2(..), Show2(..)-# endif )-#endif import Control.Monad (liftM)-#if MIN_VERSION_base(4,8,0) import Data.Bifunctor-#endif #if MIN_VERSION_base(4,10,0) import Data.Bifoldable (Bifoldable(..)) import Data.Bitraversable (Bitraversable(..)) #endif+#if MIN_VERSION_base(4,18,0)+import Data.Foldable1 (Foldable1(..))+import Data.Bifoldable1 (Bifoldable1(..))+#endif #ifdef __GLASGOW_HASKELL__ import Data.Data #endif import Data.Ix (Ix(..))-#if __GLASGOW_HASKELL__ < 707-import Data.Proxy-#endif-#if MIN_VERSION_base(4,9,0) import Data.Semigroup (Semigroup(..))-#endif import Data.String (IsString(..))+#ifdef __MHS__+import Data.Traversable (Traversable(..))+#endif import Foreign.Ptr (castPtr) import Foreign.Storable (Storable(..))-#if __GLASGOW_HASKELL__ >= 702-import GHC.Generics (Generic)-#if __GLASGOW_HASKELL__ >= 706-import GHC.Generics (Generic1)-#endif+#ifdef __GLASGOW_HASKELL__+import GHC.Generics (Generic, Generic1) #endif -- | A @'Tagged' s b@ value is a value @b@ with an attached phantom type @s@.@@ -103,35 +80,14 @@ -- -- 'Tagged' has kind @k -> * -> *@ if the compiler supports @PolyKinds@, therefore -- there is an extra @k@ showing in the instance haddocks that may cause confusion.-newtype Tagged s b = Tagged { unTagged :: b } deriving- ( Eq, Ord, Ix, Bounded-#if __GLASGOW_HASKELL__ >= 702- , Generic-#if __GLASGOW_HASKELL__ >= 706- , Generic1-#endif-#endif--#if __GLASGOW_HASKELL__ >= 707- , Typeable-#endif-- )-+newtype Tagged s b = Tagged { unTagged :: b }+ deriving ( Eq, Ord, Ix, Bounded #ifdef __GLASGOW_HASKELL__-#if __GLASGOW_HASKELL__ < 707-instance Typeable2 Tagged where- typeOf2 _ = mkTyConApp taggedTyCon []--taggedTyCon :: TyCon-#if __GLASGOW_HASKELL__ < 704-taggedTyCon = mkTyCon "Data.Tagged.Tagged"-#else-taggedTyCon = mkTyCon3 "tagged" "Data.Tagged" "Tagged"-#endif-+ , Generic, Generic1 #endif+ ) +#ifdef __GLASGOW_HASKELL__ instance (Data s, Data b) => Data (Tagged s b) where gfoldl f z (Tagged b) = z Tagged `f` b toConstr _ = taggedConstr@@ -160,7 +116,6 @@ readsPrec d = readParen (d > 10) $ \r -> [(Tagged a, t) | ("Tagged", s) <- lex r, (a, t) <- readsPrec 11 s] -#if MIN_VERSION_base(4,9,0) instance Semigroup a => Semigroup (Tagged s a) where Tagged a <> Tagged b = Tagged (a <> b) stimes n (Tagged a) = Tagged (stimes n a)@@ -168,22 +123,15 @@ instance (Semigroup a, Monoid a) => Monoid (Tagged s a) where mempty = Tagged mempty mappend = (<>)-#else-instance Monoid a => Monoid (Tagged s a) where- mempty = Tagged mempty- mappend (Tagged a) (Tagged b) = Tagged (mappend a b)-#endif instance Functor (Tagged s) where fmap f (Tagged x) = Tagged (f x) {-# INLINE fmap #-} -#if MIN_VERSION_base(4,8,0) -- this instance is provided by the bifunctors package for GHC<7.9 instance Bifunctor Tagged where bimap _ g (Tagged b) = Tagged (g b) {-# INLINE bimap #-}-#endif #if MIN_VERSION_base(4,10,0) -- these instances are provided by the bifunctors package for GHC<8.1@@ -196,26 +144,22 @@ {-# INLINE bitraverse #-} #endif +#if MIN_VERSION_base(4,18,0)+instance Foldable1 (Tagged a) where+ foldMap1 f (Tagged a) = f a+ {-# INLINE foldMap1 #-}++instance Bifoldable1 Tagged where+ bifoldMap1 _ g (Tagged b) = g b+ {-# INLINE bifoldMap1 #-}+#endif+ #ifdef MIN_VERSION_deepseq instance NFData b => NFData (Tagged s b) where rnf (Tagged b) = rnf b #endif -#ifdef MIN_VERSION_transformers-# if MIN_VERSION_transformers(0,4,0) && !(MIN_VERSION_transformers(0,5,0)) instance Eq1 (Tagged s) where- eq1 = (==)--instance Ord1 (Tagged s) where- compare1 = compare--instance Read1 (Tagged s) where- readsPrec1 = readsPrec--instance Show1 (Tagged s) where- showsPrec1 = showsPrec-# else-instance Eq1 (Tagged s) where liftEq eq (Tagged a) (Tagged b) = eq a b instance Ord1 (Tagged s) where@@ -244,8 +188,6 @@ liftShowsPrec2 _ _ sp _ n (Tagged b) = showParen (n > 10) $ showString "Tagged " . sp 11 b-# endif-#endif instance Applicative (Tagged s) where pure = Tagged@@ -388,24 +330,16 @@ testBit (Tagged a) i = testBit a i isSigned (Tagged a) = isSigned a bitSize (Tagged a) = bitSize a -- deprecated, but still required :(-#if MIN_VERSION_base(4,5,0) unsafeShiftL (Tagged a) i = Tagged (unsafeShiftL a i) unsafeShiftR (Tagged a) i = Tagged (unsafeShiftR a i) popCount (Tagged a) = popCount a-#endif-#if MIN_VERSION_base(4,7,0) bitSizeMaybe (Tagged a) = bitSizeMaybe a zeroBits = Tagged zeroBits-#endif -#if MIN_VERSION_base(4,7,0) instance FiniteBits a => FiniteBits (Tagged s a) where finiteBitSize (Tagged a) = finiteBitSize a-# if MIN_VERSION_base(4,8,0) countLeadingZeros (Tagged a) = countLeadingZeros a countTrailingZeros (Tagged a) = countTrailingZeros a-# endif-#endif instance IsString a => IsString (Tagged s a) where fromString = Tagged . fromString
tagged.cabal view
@@ -1,5 +1,5 @@ name: tagged-version: 0.8.6.1+version: 0.8.10 license: BSD3 license-file: LICENSE author: Edward A. Kmett@@ -14,22 +14,24 @@ build-type: Simple cabal-version: >= 1.10 extra-source-files: .hlint.yaml CHANGELOG.markdown README.markdown-tested-with: GHC == 7.0.4- , GHC == 7.2.2- , GHC == 7.4.2- , GHC == 7.6.3- , GHC == 7.8.4- , GHC == 7.10.3- , GHC == 8.0.2- , GHC == 8.2.2- , GHC == 8.4.4- , GHC == 8.6.5- , GHC == 8.8.3- , GHC == 8.10.1+tested-with:+ GHC == 8.0.2+ GHC == 8.2.2+ GHC == 8.4.4+ GHC == 8.6.5+ GHC == 8.8.4+ GHC == 8.10.7+ GHC == 9.0.2+ GHC == 9.2.8+ GHC == 9.4.8+ GHC == 9.6.6+ GHC == 9.8.4+ GHC == 9.10.1+ GHC == 9.12.1 source-repository head type: git- location: git://github.com/ekmett/tagged.git+ location: https://github.com/ekmett/tagged.git flag deepseq description:@@ -39,51 +41,33 @@ default: True manual: True -flag transformers+flag template-haskell description:- You can disable the use of the `transformers` and `transformers-compat` packages using `-f-transformers`.+ You can disable the use of the `template-haskell` package using `-f-template-haskell`. .- Disable this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.+ Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users. default: True manual: True library default-language: Haskell98 other-extensions: CPP- build-depends: base >= 2 && < 5+ build-depends:+ base >= 4.9 && < 5 ghc-options: -Wall hs-source-dirs: src- exposed-modules: Data.Tagged+ exposed-modules:+ Data.Tagged if impl(ghc >= 9.0) -- these flags may abort compilation with GHC-8.10 -- https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3295 ghc-options: -Winferred-safe-imports -Wmissing-safe-haskell-mode - if !impl(hugs)- cpp-options: -DLANGUAGE_DeriveDataTypeable- other-extensions: DeriveDataTypeable-- if impl(ghc<7.7)- hs-source-dirs: old- exposed-modules: Data.Proxy- other-modules: Paths_tagged-- if impl(ghc>=7.2 && <7.5)- build-depends: ghc-prim-- if impl(ghc>=7.6)- exposed-modules: Data.Proxy.TH- build-depends: template-haskell >= 2.8 && < 2.18- if flag(deepseq)- build-depends: deepseq >= 1.1 && < 1.5-- if flag(transformers)- build-depends: transformers >= 0.2 && < 0.6+ build-depends: deepseq >= 1.1 && < 1.6 - -- Ensure Data.Functor.Classes is always available- if impl(ghc >= 7.10) || impl(ghcjs)- build-depends: transformers >= 0.4.2.0- else- build-depends: transformers-compat >= 0.5 && < 1+ if flag(template-haskell) && impl(ghc)+ build-depends: template-haskell >= 2.11 && < 2.24+ exposed-modules:+ Data.Proxy.TH