pattern synonym with required ctx having polykinded constraint fails

Sreenidhi Nair nair.sreenidhi at gmail.com
Wed Oct 21 11:49:05 UTC 2015


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20151021/e5b5fc94/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: bug.tar.gz
Type: application/x-gzip
Size: 2154 bytes
Desc: not available
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20151021/e5b5fc94/attachment.bin>


More information about the ghc-devs mailing list