[Haskell] Re: Using implicit parameter constraints in data decl

Benjamin Franksen benjamin.franksen at bessy.de
Sun Nov 7 13:36:40 EST 2004


On Sunday 07 November 2004 20:09, Simon Peyton-Jones wrote:
| Definitely a bug.  Could you pls make a small module that elicits the
| bug, and send it to me?

Here it is:

> module Test where
> 
> data Test = (?val::Bool) => Test { name :: String }
> 
> instance Show Test where
>     show p = name p

franksen at linux: .../src/testbug > ghc -fimplicit-params TestBug.hs
ghc-6.2.2: panic! (the `impossible' happened, GHC version 6.2.2):
        simplCore/Simplify.lhs:1473: Non-exhaustive patterns in function 
cat_evals

BTW, I see now that the data declaration is syntactically wrong. Anyway, the 
(syntactically) correct version

data (?val::Bool) => Test = Test { name :: String }

is rejected by the compiler:

TestBug.hs:3:
    Illegal constraint ?val :: Bool
    In the context: (?val :: Bool)
    While checking the context of the data type declaration for `Test'
    In the data type declaration for `Test'

which is unfortunate since it means that you cannot put a function that 
depends on an implicit parameter into a data structure. There are probably 
technical reasons for this restriction, but it means that such functions are 
no longer first class objects.

Cheers,
Ben


More information about the Haskell mailing list