2 {-# LANGUAGE PatternSynonyms #-}
3 {-# LANGUAGE TypeOperators #-}
4 {-# LANGUAGE RankNTypes #-}
5 {-# LANGUAGE PolyKinds #-}
12 data TypeRep
(a
:: k
) where
13 Con
:: TypeRep
(a
:: k
)
14 TrFun
:: forall (r1
:: RuntimeRep
) (r2
:: RuntimeRep
)
15 (a
:: TYPE r1
) (b
:: TYPE r2
).
20 pattern Fun
:: forall k
(fun
:: k
). ()
21 => forall (r1
:: RuntimeRep
) (r2
:: RuntimeRep
)
22 (arg
:: TYPE r1
) (res
:: TYPE r2
).
23 (k ~ Type
, fun ~~
(arg
-> res
))
27 pattern Fun arg res
<- TrFun arg res
30 Dynamic
:: forall a
. TypeRep a
-> a
-> Dynamic
32 -- Adding this results in failure
35 dynApply
:: Dynamic
-> Dynamic
-> Maybe Dynamic
36 -- Changing TrFun to Fun also results in failure
37 dynApply
(Dynamic
(Fun ta tr
) f
) (Dynamic ta
' x
) = undefined
38 dynApply _ _
= Nothing