blob: 9b71d0926ecc7a083875e87e0f7fdf036071e3c1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
:seti -XDataKinds -XTemplateHaskell
import Language.Haskell.TH
import Data.Proxy
data (:::) = forall k k' . k ::: k'; infixr 5 :::
intT = ConT ''Int
stringT = ConT ''String
boolT = ConT ''Bool
:t Proxy @($(pure $ UInfixT intT '(:::) stringT))
promUInf x y = PromotedUInfixT x (mkName ":::") y
:t Proxy @($(pure $ (intT `promUInf` stringT) `promUInf` boolT))
promInf x y = PromotedInfixT x (mkName ":::") y
:t Proxy @($(pure $ (intT `promInf` stringT) `promInf` boolT))
|