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 +6/−0
- src/Language/Haskell/TH/Optics.hs +161/−115
- template-haskell-optics.cabal +12/−7
+ 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