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@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