Pattern synonyms and record selectors
Consider this
{-# LANGUAGE PatternSynonyms, ExistentialQuantification #-}
module ExQuant where
data Showable = forall a . Show a => Showable { fs :: a }
pattern Nasty{fn} = Showable fn
qux1 = fs (Showable True)
qux2 = fn (Showable True)
I have discovered that in qux2
, the use of fn
is a HsVar
, not a HsRecFld
as it should be. And the occurrence of fs
in qux1
is indeed a HsFld
.
I'm not sure of the consequences, but it looks inconsistent and wrong.