packages feed

template-haskell-optics 0.1 → 0.2

raw patch · 3 files changed

+179/−122 lines, 3 filesdep +th-abstractiondep ~basedep ~containersdep ~optics-core

Dependencies added: th-abstraction

Dependency ranges changed: base, containers, optics-core, template-haskell

Files

+ CHANGELOG.md view
@@ -0,0 +1,6 @@+# template-haskell-optics-0.2 (2022-03-22)+* Add support for GHC 9.0 and 9.2+* Drop the `DataPrim` type synonym++# template-haskell-optics-0.1 (2020-08-29)+* Initial release
src/Language/Haskell/TH/Optics.hs view
@@ -1,5 +1,6 @@-{-# LANGUAGE CPP              #-}-{-# LANGUAGE LambdaCase       #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE LambdaCase #-} -- | -- Module: Language.Haskell.TH.Optics -- Description: Optics for types defined in "Language.Haskell.TH".@@ -66,11 +67,9 @@   -- ** Bang Lenses   , bangSourceUnpackedness   , bangSourceStrictness-#if MIN_VERSION_template_haskell(2,12,0)   -- ** DerivClause Lenses   , derivClauseStrategy   , derivClauseCxt-#endif   -- * Prisms   -- ** Info Prisms   , _ClassI@@ -81,9 +80,7 @@   , _DataConI   , _VarI   , _TyVarI-#if MIN_VERSION_template_haskell(2,12,0)   , _PatSynI-#endif   -- ** Dec Prisms   , _FunD   , _ValD@@ -105,14 +102,11 @@   , _DefaultSigD   , _DataFamilyD   , _OpenTypeFamilyD-#if MIN_VERSION_template_haskell(2,12,0)   , _PatSynD   , _PatSynSigD-#endif #if MIN_VERSION_template_haskell(2,15,0)   , _ImplicitParamBindD #endif-#if MIN_VERSION_template_haskell(2,12,0)   -- ** PatSynDir Prisms   , _Unidir   , _ImplBidir@@ -121,7 +115,6 @@   , _PrefixPatSyn   , _InfixPatSyn   , _RecordPatSyn-#endif   -- ** Con Prisms   , _NormalC   , _RecC@@ -166,9 +159,7 @@   , _RuleP   , _AnnP   , _LineP-#if MIN_VERSION_template_haskell(2,12,0)   , _CompleteP-#endif   -- ** Inline Prisms   , _NoInline   , _Inline@@ -203,9 +194,7 @@   , _ConE   , _LitE   , _AppE-#if MIN_VERSION_template_haskell(2,12,0)   , _AppTypeE-#endif   , _InfixE   , _UInfixE   , _ParensE@@ -213,9 +202,7 @@   , _LamCaseE   , _TupE   , _UnboxedTupE-#if MIN_VERSION_template_haskell(2,12,0)   , _UnboxedSumE-#endif   , _CondE   , _MultiIfE   , _LetE@@ -274,9 +261,7 @@   , _VarP   , _TupP   , _UnboxedTupP-#if MIN_VERSION_template_haskell(2,12,0)   , _UnboxedSumP-#endif   , _ConP   , _InfixP   , _UInfixP@@ -298,9 +283,7 @@   , _PromotedT   , _TupleT   , _UnboxedTupleT-#if MIN_VERSION_template_haskell(2,12,0)   , _UnboxedSumT-#endif   , _ArrowT   , _EqualityT   , _ListT@@ -321,6 +304,14 @@ #if MIN_VERSION_template_haskell(2,16,0)   , _ForallVisT #endif+#if MIN_VERSION_template_haskell(2,17,0)+  , _MulArrowT+#endif+#if MIN_VERSION_template_haskell(2,17,0)+  -- ** Specificity Prisms+  , _SpecifiedSpec+  , _InferredSpec+#endif   -- ** TyVarBndr Prisms   , _PlainTV   , _KindedTV@@ -331,17 +322,18 @@   -- ** TyLit Prisms   , _NumTyLit   , _StrTyLit+#if MIN_VERSION_template_haskell(2,18,0)+  , _CharTyLit+#endif   -- ** Role Prisms   , _NominalR   , _RepresentationalR   , _PhantomR   , _InferR-#if MIN_VERSION_template_haskell(2,12,0)   -- ** DerivStrategy Prisms   , _StockStrategy   , _AnyclassStrategy   , _NewtypeStrategy-#endif   ) where  import Data.Map as Map hiding (map, toList)@@ -349,6 +341,7 @@ import Data.Set as Set hiding (map, toList) import Data.Word import Language.Haskell.TH+import Language.Haskell.TH.Datatype.TyVarBndr import Language.Haskell.TH.Syntax  import Data.Set.Optics@@ -364,10 +357,8 @@   -- | Extract (or modify) the 'Name' of something   name :: Lens' t Name -instance HasName TyVarBndr where-  name = lensVL $ \f -> \case-    PlainTV n    -> PlainTV <$> f n-    KindedTV n k -> (`KindedTV` k) <$> f n+instance HasName (TyVarBndr_ flag) where+  name = lensVL traverseTVName  instance HasName Name where   name = lensVL id@@ -433,7 +424,7 @@ instance HasTypes TySynEqn where #if MIN_VERSION_template_haskell(2,15,0)   types = traversalVL $ \f (TySynEqn mtvbs lhs rhs) ->-    TySynEqn <$> traverseOf (_Just % traversed % _KindedTV % _2) f mtvbs+    TySynEqn <$> traverseOf (_Just % traversed % traversalVL traverseTVKind) f mtvbs              <*> traverseOf types f lhs              <*> traverseOf types f rhs #else@@ -452,7 +443,7 @@   -- 'Traversal' laws, when in doubt generate your names with 'newName'.   typeVarsEx :: Set Name -> Traversal' t Name -instance HasTypeVars TyVarBndr where+instance HasTypeVars (TyVarBndr_ flag) where   typeVarsEx s = traversalVL $ \f b ->     if view name b `Set.member` s     then pure b@@ -495,19 +486,19 @@     t@TupleT{}         -> pure t     t@UnboxedTupleT{}  -> pure t     t@WildCardT{}      -> pure t-#if MIN_VERSION_template_haskell(2,12,0)     t@UnboxedSumT{}    -> pure t-#endif #if MIN_VERSION_template_haskell(2,15,0)     AppKindT t k       -> AppKindT <$> traverseOf (typeVarsEx s) f t                                    <*> traverseOf (typeVarsEx s) f k     ImplicitParamT n t -> ImplicitParamT n <$> traverseOf (typeVarsEx s) f t #endif #if MIN_VERSION_template_haskell(2,16,0)-    ForallVisT bs ty -> let s' = s `Set.union` setOf typeVars bs-                        in ForallVisT bs <$> traverseOf (typeVarsEx s') f ty+    ForallVisT bs ty   -> let s' = s `Set.union` setOf typeVars bs+                          in ForallVisT bs <$> traverseOf (typeVarsEx s') f ty #endif-+#if MIN_VERSION_template_haskell(2,17,0)+    t@MulArrowT{}      -> pure t+#endif  instance HasTypeVars Con where   typeVarsEx s = traversalVL $ \f -> \case@@ -567,9 +558,7 @@   substType _ t@TupleT{}          = t   substType _ t@UnboxedTupleT{}   = t   substType _ t@WildCardT{}       = t-#if MIN_VERSION_template_haskell(2,12,0)-  substType _ t@UnboxedSumT{}   = t-#endif+  substType _ t@UnboxedSumT{}     = t #if MIN_VERSION_template_haskell(2,15,0)   substType m (AppKindT t k)       = AppKindT (substType m t) (substType m k)   substType m (ImplicitParamT n t) = ImplicitParamT n (substType m t)@@ -578,6 +567,9 @@   substType m (ForallVisT bs ty)   = ForallVisT bs (substType m' ty)     where m' = foldrOf typeVars Map.delete m bs #endif+#if MIN_VERSION_template_haskell(2,17,0)+  substType _ t@MulArrowT{}        = t+#endif  instance SubstType t => SubstType [t] where   substType = map . substType@@ -702,7 +694,7 @@   g (TypeFamilyHead n _    _  _ )   = n   s (TypeFamilyHead _ tvbs rs ia) n = TypeFamilyHead n tvbs rs ia -typeFamilyHeadTyVarBndrs :: Lens' TypeFamilyHead [TyVarBndr]+typeFamilyHeadTyVarBndrs :: Lens' TypeFamilyHead [TyVarBndrUnit] typeFamilyHeadTyVarBndrs = lens g s where   g (TypeFamilyHead _ tvbs _  _ )      = tvbs   s (TypeFamilyHead n _    rs ia) tvbs = TypeFamilyHead n tvbs rs ia@@ -727,7 +719,6 @@   g (Bang _  su) = su   s (Bang ss _ ) = Bang ss -#if MIN_VERSION_template_haskell(2,12,0) derivClauseStrategy :: Lens' DerivClause (Maybe DerivStrategy) derivClauseStrategy = lens g s where   g (DerivClause mds _)     = mds@@ -737,7 +728,6 @@ derivClauseCxt = lens g s where   g (DerivClause _   c) = c   s (DerivClause mds _) = DerivClause mds-#endif  _ClassI :: Prism' Info (Dec, [InstanceDec]) _ClassI@@ -803,7 +793,6 @@       remitter (TyVarI x y) = Just (x, y)       remitter _ = Nothing -#if MIN_VERSION_template_haskell(2,12,0) _PatSynI :: Prism' Info (Name, PatSynType) _PatSynI   = prism' reviewer remitter@@ -811,7 +800,6 @@       reviewer (x, y) = PatSynI x y       remitter (PatSynI x y) = Just (x, y)       remitter _ = Nothing-#endif  _FunD :: Prism' Dec (Name, [Clause]) _FunD@@ -829,7 +817,7 @@       remitter (ValD x y z) = Just (x, y, z)       remitter _ = Nothing -_TySynD :: Prism' Dec (Name, [TyVarBndr], Type)+_TySynD :: Prism' Dec (Name, [TyVarBndrUnit], Type) _TySynD   = prism' reviewer remitter   where@@ -837,7 +825,7 @@       remitter (TySynD x y z) = Just (x, y, z)       remitter _ = Nothing -_ClassD :: Prism' Dec (Cxt, Name, [TyVarBndr], [FunDep], [Dec])+_ClassD :: Prism' Dec (Cxt, Name, [TyVarBndrUnit], [FunDep], [Dec]) _ClassD   = prism' reviewer remitter   where@@ -944,12 +932,6 @@       remitter (RoleAnnotD x y) = Just (x, y)       remitter _ = Nothing --- |--- @--- _StandaloneDerivD :: 'Prism'' 'Dec' ('Maybe' 'DerivStrategy', 'Cxt', 'Type') -- template-haskell 2.12+--- _StandaloneDerivD :: 'Prism'' 'Dec' ('Cxt', 'Type')                      -- Earlier versions--- @-#if MIN_VERSION_template_haskell(2,12,0) _StandaloneDerivD :: Prism' Dec (Maybe DerivStrategy, Cxt, Type) _StandaloneDerivD   = prism' reviewer remitter@@ -957,15 +939,6 @@       reviewer (x, y, z) = StandaloneDerivD x y z       remitter (StandaloneDerivD x y z) = Just (x, y, z)       remitter _ = Nothing-#else-_StandaloneDerivD :: Prism' Dec (Cxt, Type)-_StandaloneDerivD-  = prism' reviewer remitter-  where-      reviewer (x, y) = StandaloneDerivD x y-      remitter (StandaloneDerivD x y) = Just (x, y)-      remitter _ = Nothing-#endif  _DefaultSigD :: Prism' Dec (Name, Type) _DefaultSigD@@ -983,20 +956,13 @@       remitter (ClosedTypeFamilyD x y) = Just (x, y)       remitter _ = Nothing -#if MIN_VERSION_template_haskell(2,12,0)-type DataPrism' tys cons = Prism' Dec (Cxt, Name, tys, Maybe Kind, cons, [DerivClause])-#else-type DataPrism' tys cons = Prism' Dec (Cxt, Name, tys, Maybe Kind, cons, Cxt)-#endif- -- | -- @--- _DataInstD :: 'Prism'' 'Dec' ('Cxt', 'Maybe' ['TyVarBndr'], 'Type', 'Maybe' 'Kind', ['Con'], ['DerivClause']) -- template-haskell-2.15+--- _DataInstD :: 'Prism'' 'Dec' ('Cxt', 'Name', ['Type'],            'Maybe' 'Kind', ['Con'], ['DerivClause']) -- template-haskell-2.12 through 2.14--- _DataInstD :: 'Prism'' 'Dec' ('Cxt', 'Name', ['Type'],            'Maybe' 'Kind', ['Con'], 'Cxt')           -- Earlier versions+-- _DataInstD :: 'Prism'' 'Dec' ('Cxt', 'Maybe' ['TyVarBndrUnit'], 'Type', 'Maybe' 'Kind', ['Con'], ['DerivClause']) -- template-haskell-2.15++-- _DataInstD :: 'Prism'' 'Dec' ('Cxt', 'Name', ['Type'],                'Maybe' 'Kind', ['Con'], ['DerivClause']) -- Earlier versions  -- @ #if MIN_VERSION_template_haskell(2,15,0)-_DataInstD :: Prism' Dec (Cxt, Maybe [TyVarBndr], Type, Maybe Kind, [Con], [DerivClause])+_DataInstD :: Prism' Dec (Cxt, Maybe [TyVarBndrUnit], Type, Maybe Kind, [Con], [DerivClause]) _DataInstD   = prism' reviewer remitter   where@@ -1004,7 +970,7 @@       remitter (DataInstD x y z w u v) = Just (x, y, z, w, u, v)       remitter _ = Nothing #else-_DataInstD :: DataPrism' [Type] [Con]+_DataInstD :: Prism' Dec (Cxt, Name, [Type], Maybe Kind, [Con], [DerivClause]) _DataInstD   = prism' reviewer remitter   where@@ -1015,12 +981,11 @@  -- | -- @--- _NewtypeInstD :: 'Prism'' 'Dec' ('Cxt', 'Maybe' ['TyVarBndr'], 'Type', 'Maybe' 'Kind', 'Con', ['DerivClause']) -- template-haskell-2.15+--- _NewtypeInstD :: 'Prism'' 'Dec' ('Cxt', 'Name', ['Type'],            'Maybe' 'Kind', 'Con', ['DerivClause']) -- template-haskell-2.12 through 2.14--- _NewtypeInstD :: 'Prism'' 'Dec' ('Cxt', 'Name', ['Type'],            'Maybe' 'Kind', 'Con', 'Cxt')           -- Earlier versions+-- _NewtypeInstD :: 'Prism'' 'Dec' ('Cxt', 'Maybe' ['TyVarBndrUnit'], 'Type', 'Maybe' 'Kind', 'Con', ['DerivClause']) -- template-haskell-2.15++-- _NewtypeInstD :: 'Prism'' 'Dec' ('Cxt', 'Name', ['Type'],                'Maybe' 'Kind', 'Con', ['DerivClause']) -- Eariler versions -- @ #if MIN_VERSION_template_haskell(2,15,0)-_NewtypeInstD :: Prism' Dec (Cxt, Maybe [TyVarBndr], Type, Maybe Kind, Con, [DerivClause])+_NewtypeInstD :: Prism' Dec (Cxt, Maybe [TyVarBndrUnit], Type, Maybe Kind, Con, [DerivClause]) _NewtypeInstD   = prism' reviewer remitter   where@@ -1028,7 +993,7 @@       remitter (NewtypeInstD x y z w u v) = Just (x, y, z, w, u, v)       remitter _ = Nothing #else-_NewtypeInstD :: DataPrism' [Type] Con+_NewtypeInstD :: Prism' Dec (Cxt, Name, [Type], Maybe Kind, Con, [DerivClause]) _NewtypeInstD   = prism' reviewer remitter   where@@ -1037,12 +1002,7 @@       remitter _ = Nothing #endif --- |--- @--- _DataD :: 'Prism'' 'Dec' ('Cxt', 'Name', ['TyVarBndr'], 'Maybe' 'Kind', ['Con'], ['DerivClause']) -- template-haskell-2.12+--- _DataD :: 'Prism'' 'Dec' ('Cxt', 'Name', ['TyVarBndr'], 'Maybe' 'Kind', ['Con'], 'Cxt')           -- Earlier versions--- @-_DataD :: DataPrism' [TyVarBndr] [Con]+_DataD :: Prism' Dec (Cxt, Name, [TyVarBndrUnit], Maybe Kind, [Con], [DerivClause]) _DataD   = prism' reviewer remitter   where@@ -1050,12 +1010,7 @@       remitter (DataD x y z w u v) = Just (x, y, z, w, u, v)       remitter _ = Nothing --- |--- @--- _NewtypeD :: 'Prism'' 'Dec' ('Cxt', 'Name', ['TyVarBndr'], 'Maybe' 'Kind', 'Con', ['DerivClause']) -- template-haskell-2.12+--- _NewtypeD :: 'Prism'' 'Dec' ('Cxt', 'Name', ['TyVarBndr'], 'Maybe' 'Kind', 'Con', 'Cxt')           -- Earlier versions--- @-_NewtypeD :: DataPrism' [TyVarBndr] Con+_NewtypeD :: Prism' Dec (Cxt, Name, [TyVarBndrUnit], Maybe Kind, Con, [DerivClause]) _NewtypeD   = prism' reviewer remitter   where@@ -1063,7 +1018,7 @@       remitter (NewtypeD x y z w u v) = Just (x, y, z, w, u, v)       remitter _ = Nothing -_DataFamilyD :: Prism' Dec (Name, [TyVarBndr], Maybe Kind)+_DataFamilyD :: Prism' Dec (Name, [TyVarBndrUnit], Maybe Kind) _DataFamilyD   = prism' reviewer remitter   where@@ -1079,12 +1034,6 @@       remitter (OpenTypeFamilyD x) = Just x       remitter _ = Nothing --- |--- @--- _PatSynD :: 'Prism'' 'Dec' ('Name', 'PatSynArgs', 'PatSynDir', 'Pat') -- template-haskell-2.12+--- _PatSynD :: 'Prism'' 'Dec' ('Name', 'PatSynType')                 -- Earlier versions--- @-#if MIN_VERSION_template_haskell(2,12,0) _PatSynD :: Prism' Dec (Name, PatSynArgs, PatSynDir, Pat) _PatSynD   = prism' reviewer remitter@@ -1100,7 +1049,6 @@       reviewer (x, y) = PatSynSigD x y       remitter (PatSynSigD x y) = Just (x, y)       remitter _ = Nothing-#endif  #if MIN_VERSION_template_haskell(2,15,0) _ImplicitParamBindD :: Prism' Dec (String, Exp)@@ -1112,7 +1060,6 @@       remitter _ = Nothing #endif -#if MIN_VERSION_template_haskell(2,12,0) _Unidir :: Prism' PatSynDir () _Unidir   = prism' reviewer remitter@@ -1160,7 +1107,6 @@       reviewer = RecordPatSyn       remitter (RecordPatSyn x) = Just x       remitter _ = Nothing-#endif  _NormalC ::   Prism' Con (Name, [BangType])@@ -1188,7 +1134,7 @@       remitter (InfixC x y z) = Just (x, y, z)       remitter _ = Nothing -_ForallC :: Prism' Con ([TyVarBndr], Cxt, Con)+_ForallC :: Prism' Con ([TyVarBndrSpec], Cxt, Con) _ForallC   = prism' reviewer remitter   where@@ -1390,11 +1336,11 @@  -- | -- @--- _RuleP :: 'Prism'' 'Pragma' ('String', 'Maybe' ['TyVarBndr'], ['RuleBndr'], 'Exp', 'Exp', 'Phases') -- template-haskell 2.15+:--- _RuleP :: 'Prism'' 'Pragma' ('String', ['RuleBndr'], 'Exp', 'Exp', 'Phases')                    -- Earlier versions+-- _RuleP :: 'Prism'' 'Pragma' ('String', 'Maybe' ['TyVarBndrUnit'], ['RuleBndr'], 'Exp', 'Exp', 'Phases') -- template-haskell 2.15+:+-- _RuleP :: 'Prism'' 'Pragma' ('String', ['RuleBndr'], 'Exp', 'Exp', 'Phases')                        -- Earlier versions -- @ #if MIN_VERSION_template_haskell(2,15,0)-_RuleP :: Prism' Pragma (String, Maybe [TyVarBndr], [RuleBndr], Exp, Exp, Phases)+_RuleP :: Prism' Pragma (String, Maybe [TyVarBndrUnit], [RuleBndr], Exp, Exp, Phases) _RuleP   = prism' reviewer remitter   where@@ -1427,7 +1373,6 @@       remitter (LineP x y) = Just (x, y)       remitter _ = Nothing -#if MIN_VERSION_template_haskell(2,12,0) _CompleteP :: Prism' Pragma ([Name], Maybe Name) _CompleteP   = prism' reviewer remitter@@ -1435,7 +1380,6 @@       reviewer (x, y) = CompleteP x y       remitter (CompleteP x y) = Just (x, y)       remitter _ = Nothing-#endif  _NoInline :: Prism' Inline () _NoInline@@ -1655,7 +1599,6 @@       remitter (AppE x y) = Just (x, y)       remitter _ = Nothing -#if MIN_VERSION_template_haskell(2,12,0) _AppTypeE :: Prism' Exp (Exp, Type) _AppTypeE   = prism' reviewer remitter@@ -1663,7 +1606,6 @@       reviewer (x, y) = AppTypeE x y       remitter (AppTypeE x y) = Just (x, y)       remitter _ = Nothing-#endif  _InfixE :: Prism' Exp (Maybe Exp, Exp, Maybe Exp) _InfixE@@ -1739,7 +1681,6 @@       remitter (UnboxedTupE x) = Just x       remitter _ = Nothing -#if MIN_VERSION_template_haskell(2,12,0) _UnboxedSumE :: Prism' Exp (Exp, SumAlt, SumArity) _UnboxedSumE   = prism' reviewer remitter@@ -1747,7 +1688,6 @@       reviewer (x, y, z) = UnboxedSumE x y z       remitter (UnboxedSumE x y z) = Just (x, y, z)       remitter _ = Nothing-#endif  _CondE :: Prism' Exp (Exp, Exp, Exp) _CondE@@ -1781,6 +1721,20 @@       remitter (CaseE x y) = Just (x, y)       remitter _ = Nothing +-- |+-- @+-- _DoE :: 'Prism'' 'Exp' ('Maybe' 'ModName', ['Stmt']) -- template-haskell-2.17++-- _DoE :: 'Prism'' 'Exp' ['Stmt']                  -- Earlier versions+-- @+#if MIN_VERSION_template_haskell(2,17,0)+_DoE :: Prism' Exp (Maybe ModName, [Stmt])+_DoE+  = prism' reviewer remitter+  where+      reviewer (x, y) = DoE x y+      remitter (DoE x y) = Just (x, y)+      remitter _ = Nothing+#else _DoE :: Prism' Exp [Stmt] _DoE   = prism' reviewer remitter@@ -1788,6 +1742,7 @@       reviewer = DoE       remitter (DoE x) = Just x       remitter _ = Nothing+#endif  _CompE :: Prism' Exp [Stmt] _CompE@@ -1864,6 +1819,21 @@ #endif  #if MIN_VERSION_template_haskell(2,15,0)++-- |+-- @+-- _MDoE :: 'Prism'' 'Exp' ('Maybe' 'ModName', ['Stmt']) -- template-haskell-2.17++-- _MDoE :: 'Prism'' 'Exp' ['Stmt']                  -- Earlier versions+-- @+#if MIN_VERSION_template_haskell(2,17,0)+_MDoE :: Prism' Exp (Maybe ModName, [Stmt])+_MDoE+  = prism' reviewer remitter+  where+      reviewer (x, y) = MDoE x y+      remitter (MDoE x y) = Just (x, y)+      remitter _ = Nothing+#else _MDoE :: Prism' Exp [Stmt] _MDoE   = prism' reviewer remitter@@ -1871,6 +1841,7 @@       reviewer = MDoE       remitter (MDoE x) = Just x       remitter _ = Nothing+#endif  _ImplicitParamVarE :: Prism' Exp String _ImplicitParamVarE@@ -2109,7 +2080,6 @@       remitter (UnboxedTupP x) = Just x       remitter _ = Nothing -#if MIN_VERSION_template_haskell(2,12,0) _UnboxedSumP :: Prism' Pat (Pat, SumAlt, SumArity) _UnboxedSumP   = prism' reviewer remitter@@ -2117,8 +2087,21 @@       reviewer (x, y, z) = UnboxedSumP x y z       remitter (UnboxedSumP x y z) = Just (x, y, z)       remitter _ = Nothing-#endif +-- |+-- @+-- _ConP :: 'Prism'' 'Pat' ('Name', ['Type'], 'Pat') -- template-haskell-2.18++-- _ConP :: 'Prism'' 'Pat' ('Name',         'Pat') -- Earlier versions+-- @+#if MIN_VERSION_template_haskell(2,18,0)+_ConP :: Prism' Pat (Name, [Type], [Pat])+_ConP+  = prism' reviewer remitter+  where+      reviewer (x, y, z) = ConP x y z+      remitter (ConP x y z) = Just (x, y, z)+      remitter _ = Nothing+#else _ConP :: Prism' Pat (Name, [Pat]) _ConP   = prism' reviewer remitter@@ -2126,6 +2109,7 @@       reviewer (x, y) = ConP x y       remitter (ConP x y) = Just (x, y)       remitter _ = Nothing+#endif  _InfixP :: Prism' Pat (Pat, Name, Pat) _InfixP@@ -2215,7 +2199,7 @@       remitter (ViewP x y) = Just (x, y)       remitter _ = Nothing -_ForallT :: Prism' Type ([TyVarBndr], Cxt, Type)+_ForallT :: Prism' Type ([TyVarBndrSpec], Cxt, Type) _ForallT   = prism' reviewer remitter   where@@ -2279,7 +2263,6 @@       remitter (UnboxedTupleT x) = Just x       remitter _ = Nothing -#if MIN_VERSION_template_haskell(2,12,0) _UnboxedSumT :: Prism' Type SumArity _UnboxedSumT   = prism' reviewer remitter@@ -2287,7 +2270,6 @@       reviewer = UnboxedSumT       remitter (UnboxedSumT x) = Just x       remitter _ = Nothing-#endif  _ArrowT :: Prism' Type () _ArrowT@@ -2412,7 +2394,7 @@ #endif  #if MIN_VERSION_template_haskell(2,16,0)-_ForallVisT :: Prism' Type ([TyVarBndr], Type)+_ForallVisT :: Prism' Type ([TyVarBndrUnit], Type) _ForallVisT   = prism' reviewer remitter   where@@ -2421,6 +2403,46 @@       remitter _ = Nothing #endif +#if MIN_VERSION_template_haskell(2,17,0)+_MulArrowT :: Prism' Type ()+_MulArrowT+  = prism' reviewer remitter+  where+      reviewer () = MulArrowT+      remitter MulArrowT = Just ()+      remitter _ = Nothing++_SpecifiedSpec :: Prism' Specificity ()+_SpecifiedSpec+  = prism' reviewer remitter+  where+      reviewer () = SpecifiedSpec+      remitter SpecifiedSpec = Just ()+      remitter _ = Nothing++_InferredSpec :: Prism' Specificity ()+_InferredSpec+  = prism' reviewer remitter+  where+      reviewer () = InferredSpec+      remitter InferredSpec = Just ()+      remitter _ = Nothing+#endif++-- |+-- @+-- _PlainTV :: 'Prism'' ('TyVarBndr' flag) ('Name', flag) -- template-haskell-2.17++-- _PlainTV :: 'Prism''  'TyVarBndr'        'Name'        -- Earlier versions+-- @+#if MIN_VERSION_template_haskell(2,17,0)+_PlainTV :: Prism' (TyVarBndr flag) (Name, flag)+_PlainTV+  = prism' reviewer remitter+  where+      reviewer (x, y) = PlainTV x y+      remitter (PlainTV x y) = Just (x, y)+      remitter _ = Nothing+#else _PlainTV :: Prism' TyVarBndr Name _PlainTV   = prism' reviewer remitter@@ -2428,7 +2450,22 @@       reviewer = PlainTV       remitter (PlainTV x) = Just x       remitter _ = Nothing+#endif +-- |+-- @+-- _KindedTV :: 'Prism'' ('TyVarBndr' flag) ('Name', flag, 'Kind') -- template-haskell-2.17++-- _KindedTV :: 'Prism''  'TyVarBndr'       ('Name',       'Kind') -- Earlier versions+-- @+#if MIN_VERSION_template_haskell(2,17,0)+_KindedTV :: Prism' (TyVarBndr flag) (Name, flag, Kind)+_KindedTV+  = prism' reviewer remitter+  where+      reviewer (x, y, z) = KindedTV x y z+      remitter (KindedTV x y z) = Just (x, y, z)+      remitter _ = Nothing+#else _KindedTV :: Prism' TyVarBndr (Name, Kind) _KindedTV   = prism' reviewer remitter@@ -2436,6 +2473,7 @@       reviewer (x, y) = KindedTV x y       remitter (KindedTV x y) = Just (x, y)       remitter _ = Nothing+#endif  _NoSig :: Prism' FamilyResultSig () _NoSig@@ -2453,7 +2491,7 @@       remitter (KindSig x) = Just x       remitter _ = Nothing -_TyVarSig :: Prism' FamilyResultSig TyVarBndr+_TyVarSig :: Prism' FamilyResultSig TyVarBndrUnit _TyVarSig   = prism' reviewer remitter   where@@ -2477,6 +2515,16 @@       remitter (StrTyLit x) = Just x       remitter _ = Nothing +#if MIN_VERSION_template_haskell(2,18,0)+_CharTyLit :: Prism' TyLit Char+_CharTyLit+  = prism' reviewer remitter+  where+      reviewer = CharTyLit+      remitter (CharTyLit x) = Just x+      remitter _ = Nothing+#endif+ _NominalR :: Prism' Role () _NominalR   = prism' reviewer remitter@@ -2509,7 +2557,6 @@       remitter InferR = Just ()       remitter _ = Nothing -#if MIN_VERSION_template_haskell(2,12,0) _StockStrategy :: Prism' DerivStrategy () _StockStrategy   = prism' reviewer remitter@@ -2533,7 +2580,6 @@       reviewer () = NewtypeStrategy       remitter NewtypeStrategy = Just ()       remitter _ = Nothing-#endif  -- Internal utils 
template-haskell-optics.cabal view
@@ -1,12 +1,13 @@ name:          template-haskell-optics-version:       0.1+version:       0.2 license:       BSD3 license-file:  LICENSE build-type:    Simple maintainer:    optics@well-typed.com author:        Andrzej Rybczak-cabal-version: >=1.10-tested-with:   ghc ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.2, GHCJS ==8.4+cabal-version: 1.18+tested-with:   GHC ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7+                || ==9.0.2 || ==9.2.2, GHCJS ==8.4 synopsis:      Optics for template-haskell types category:      Data, Optics, Lenses description:@@ -14,6 +15,9 @@   .   See the @optics-th@ package for machinery to construct optics using @TemplateHaskell@. +extra-doc-files:+  CHANGELOG.md+ bug-reports:   https://github.com/well-typed/optics/issues source-repository head   type:     git@@ -25,9 +29,10 @@   hs-source-dirs:   src   ghc-options:      -Wall -  build-depends: base                   >= 4.9       && <5-               , optics-core            >= 0.3       && <0.4-               , containers             >= 0.5.7.1   && <0.7-               , template-haskell       >= 2.11      && <2.17+  build-depends: base                   >= 4.10      && <5+               , optics-core            >= 0.4       && <0.5+               , containers             >= 0.5.10.2  && <0.7+               , template-haskell       >= 2.12      && <2.19+               , th-abstraction         >= 0.4       && <0.5    exposed-modules: Language.Haskell.TH.Optics