Skip to content

Commit 09f997b

Browse files
authored
Merge pull request #40 from con-kitty/tyvarbndr
Add PlainTV and KindedTV patterns
2 parents 5951de0 + 9499719 commit 09f997b

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed

th/Categorifier/TH.hs

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{-# LANGUAGE CPP #-}
2+
{-# LANGUAGE PatternSynonyms #-}
23
{-# LANGUAGE QuasiQuotes #-}
34

45
-- | Functions that should be part of @template-haskell@, but aren't.
@@ -8,6 +9,8 @@
89
module Categorifier.TH
910
( module Language.Haskell.TH,
1011
TyVarBndr,
12+
pattern PlainTV,
13+
pattern KindedTV,
1114
alphaEquiv,
1215
alphaRename,
1316
conP,
@@ -37,16 +40,30 @@ import Data.Map (Map)
3740
import qualified Data.Map as Map
3841
import Data.Maybe (catMaybes, fromMaybe)
3942
import Data.These (These (..))
40-
import Language.Haskell.TH hiding (TyVarBndr, conP, reifyType)
43+
import Language.Haskell.TH hiding (TyVarBndr (..), conP, reifyType)
4144
import qualified Language.Haskell.TH as TH
4245
import PyF (fmt)
4346

4447
#if MIN_VERSION_template_haskell(2, 17, 0)
4548
type TyVarBndr flag = TH.TyVarBndr flag
49+
50+
pattern PlainTV :: TH.Name -> TyVarBndr flag
51+
pattern PlainTV n <- TH.PlainTV n _
52+
53+
pattern KindedTV :: TH.Name -> TH.Kind -> TyVarBndr flag
54+
pattern KindedTV n k <- TH.KindedTV n _ k
4655
#else
4756
type TyVarBndr _flag = TH.TyVarBndr
57+
58+
pattern PlainTV :: TH.Name -> TyVarBndr flag
59+
pattern PlainTV n = TH.PlainTV n
60+
61+
pattern KindedTV :: TH.Name -> TH.Kind -> TyVarBndr flag
62+
pattern KindedTV n k = TH.KindedTV n k
4863
#endif
4964

65+
{-# COMPLETE PlainTV, KindedTV #-}
66+
5067
conP :: TH.Name -> [TH.Pat] -> TH.Pat
5168
#if MIN_VERSION_template_haskell(2, 18, 0)
5269
conP n = TH.ConP n []
@@ -69,13 +86,8 @@ reifyType =
6986
#endif
7087

7188
tyVarBndrName :: TyVarBndr flag -> TH.Name
72-
#if MIN_VERSION_template_haskell(2, 17, 0)
73-
tyVarBndrName (TH.KindedTV n _ _) = n
74-
tyVarBndrName (TH.PlainTV n _) = n
75-
#else
76-
tyVarBndrName (TH.KindedTV n _) = n
77-
tyVarBndrName (TH.PlainTV n) = n
78-
#endif
89+
tyVarBndrName (KindedTV n _) = n
90+
tyVarBndrName (PlainTV n) = n
7991

8092
-- | It generates the fully-qualified name.
8193
nameQualified :: TH.Name -> String

0 commit comments

Comments
 (0)