#1728: generic classes broken
----------------------------------+-----------------------------------------
Reporter: [EMAIL PROTECTED] | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 6.8
Severity: normal | Resolution:
Keywords: | Difficulty: Unknown
Testcase: | Architecture: x86
Os: Linux |
----------------------------------+-----------------------------------------
Old description:
> I failed to get generic classes working with snapshot
> ghc-6.8.0.20070920-i386-unknown-linux.tar.bz2.
>
> I tried the following module:
>
> ---
> module Gen where
>
> import Data.Generics
>
> class Equal a where
> equal :: a -> a -> Bool
> equal {| Unit |} Unit Unit = True
> equal {| u :+: v |} (Inl x) (Inl y) = equal x y
> equal {| u :+: v |} (Inr x) (Inr y) = equal x y
> equal {| u :+: v |} _ _ = False
> equal {| u :*: v |} (x1 :*: x2) (y1 :*: y2) = equal x1 y1 && equal
> x2 y2
>
> instance Equal Bool
> ---
>
> and got
>
> ---
> [EMAIL PROTECTED]:~/tmp> ghci -fglasgow-exts -XGenerics
> GHCi, version 6.8.0.20070920: http://www.haskell.org/ghc/ :? for help
> Loading package base ... linking ... done.
> Prelude> :l Gen.hs
> [1 of 1] Compiling Gen ( Gen.hs, interpreted )
>
> Gen.hs:13:0:
> Can't find interface-file declaration for variable
> GHC.Base.$gfromBool
> Probable cause: bug in .hi-boot file, or inconsistent .hi file
> Use -ddump-if-trace to get an idea of which file caused the error
> In the first argument of `a', namely `(GHC.Base.$gfromBool b)'
> In the first argument of `(\ a -> a)', namely
> `(a (GHC.Base.$gfromBool b))'
> In the expression: (\ a -> a) (a (GHC.Base.$gfromBool b))
> Failed, modules loaded: none.
> ---
New description:
I failed to get generic classes working with snapshot
ghc-6.8.0.20070920-i386-unknown-linux.tar.bz2.
I tried the following module:
---
{{{
module Gen where
import Data.Generics
class Equal a where
equal :: a -> a -> Bool
equal {| Unit |} Unit Unit = True
equal {| u :+: v |} (Inl x) (Inl y) = equal x y
equal {| u :+: v |} (Inr x) (Inr y) = equal x y
equal {| u :+: v |} _ _ = False
equal {| u :*: v |} (x1 :*: x2) (y1 :*: y2) = equal x1 y1 && equal
x2 y2
instance Equal Bool
}}}
---
and got
---
{{{
[EMAIL PROTECTED]:~/tmp> ghci -fglasgow-exts -XGenerics
GHCi, version 6.8.0.20070920: http://www.haskell.org/ghc/ :? for help
Loading package base ... linking ... done.
Prelude> :l Gen.hs
[1 of 1] Compiling Gen ( Gen.hs, interpreted )
Gen.hs:13:0:
Can't find interface-file declaration for variable
GHC.Base.$gfromBool
Probable cause: bug in .hi-boot file, or inconsistent .hi file
Use -ddump-if-trace to get an idea of which file caused the error
In the first argument of `a', namely `(GHC.Base.$gfromBool b)'
In the first argument of `(\ a -> a)', namely
`(a (GHC.Base.$gfromBool b))'
In the expression: (\ a -> a) (a (GHC.Base.$gfromBool b))
Failed, modules loaded: none.
}}}
---
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/1728#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs