{-# LANGUAGE DataKinds, RankNTypes, TypeFamilies, TypeOperators #-} {-# OPTIONS_GHC -fplugin TypeLevel.Rewrite -fplugin-opt=TypeLevel.Rewrite:GHC.TypeLits.RewriteRules.NatRule -fplugin-opt=TypeLevel.Rewrite:GHC.TypeLits.RewriteRules.SymbolRule #-} module GHC.TypeLits.Test where import GHC.TypeLits import GHC.TypeLits.RewriteRules () ex1 :: ((1 + n) ~ (n + 1) => r) -> proxy n -> r ex1 r _ = r ex2 :: ( ((s1 `AppendSymbol` "foo") `AppendSymbol` s2) ~ (s1 `AppendSymbol` ("foo" `AppendSymbol` s2)) => r ) -> proxy s -> r ex2 r _ = r