Scoped type variables in pattern synonyms
Unsure of pattern synonym scoping rules.
I want to be able to refer to a type in the signature (assuming symbol
from #11349):
symbol :: forall s. KnownSymbol s => String
symbol = symbolVal @s Proxy
-- Not in scope: type variable ‘s’
-- Not in scope: type variable ‘s’
pattern Symbol :: forall s. KnownSymbol s => String
pattern Symbol <- ((== symbol @s) -> True) where
Symbol = symbol @s
Without TypeApplications
:
-- • Could not deduce (KnownSymbol n0)
-- arising from a use of ‘symbolVal’
-- from the context: KnownSymbol s
-- bound by the type signature for pattern synonym ‘Symbol’:
-- String
pattern Symbol :: forall s. KnownSymbol s => String
pattern Symbol <- ((== symbolVal (Proxy :: Proxy s)) -> True)
but it (GHCi, version 8.1.20160102) says the type variable s
is not in scope. Is this intentional?