pattern synonym with required ctx having polykinded constraint fails

Matthew Pickering matthewtpickering at gmail.com
Wed Oct 21 11:55:02 UTC 2015


Looks like a definite bug. Filed as #10977

https://ghc.haskell.org/trac/ghc/ticket/10997

Matt

On Wed, Oct 21, 2015 at 12:49 PM, Sreenidhi Nair
<nair.sreenidhi at gmail.com> wrote:
> Hello,
>
> We have a pattern synonym as follows
>
> type family Showable (a :: k) :: Constraint where
>   Showable (a :: *) = (Show a)
>   Showable a       = ()
>
> pattern Just' :: () => (Showable a) => a -> (Maybe a)
> pattern Just' a <- (extractJust -> (True, a)) where
>   Just' a = Just a
>
> When we try to use the pattern in a different package, the error was
>
>     [1 of 1] Compiling Bar              ( Bar.hs,
> .stack-work/dist/x86_64-linux/Cabal-1.22.4.0/build/Bar.o )
>
> /tmp/test/p2/.stack-work/install/x86_64-linux/lts-3.5/7.10.2/lib/x86_64-linux-ghc-7.10.2/p1-0.1.0.0-I5t4il6dN7vIqsT1XgYsM3/Foo.hi
>     Declaration for Just'
>     Pattern synonym Just':
>       Iface type variable out of scope:  k
>     Cannot continue after interface file error
>
> The error only occurred when Showable was polykinded and we used synonym in
> a different package . Using the synonym in the same package works fine.
>
> This problem did not happen with the following definition of (non polykinded
> ) Showable
>
> type family Showable a :: Constraint where
>   Showable a = (Show a)
>
> We have attached the sample packages which simulate the exact scenario
> described above.
>
> --
> Yours truly,
> Sreenidhi Nair
>
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>


More information about the ghc-devs mailing list