GHCi 5.04.2 segfaults on expression evaluation

Simon Peyton-Jones simonpj at microsoft.com
Wed Apr 9 04:28:24 EDT 2003


Yes, this is a bug all right.  (The right mailing list is
glasgow-haskell-bugs at haskell.org, not the Haskell mailing list,
incidentally)

I've fixed it in the HEAD. Whether the fix will make it into 5.04.4 (if
we ever release that) is moot.  But it'll certainly be in the next major
release.

Thanks for finding it

Simon

|  -----Original Message-----
|  From: Carlos Eduardo Scheidegger
[mailto:carlos.scheidegger at terra.com.br]
|  Sent: 07 March 2003 06:22
|  To: haskell at haskell.org
|  
|  Hello.
|  
|  I think I've come across a GHCi bug.
|  
|  Using the following module, GHCi version 5.04.2 segfaults, apparently
|  trying to compute a type using functional dependencies. The segfault
|  happens when I try to calculate (v1 .> v2). I tried the code on Hugs,
|  and it answers
|  
|  Main> v1 .> v2
|  V [] :: PSOp (Pop a Id)
|  
|  as expected. I think the problem is occuring in the line
|  
|  > instance Reverse a b c => CheckPS Id a b c
|  
|  because if I remove the line
|  
|  > instance Reverse a (Pop t b)  c => Reverse (Pop t a) b c
|  
|  instead of segfaulting, GHCi rightfully complains:
|  
|  <interactive>:1:
|      No instance for (Reverse (Pop a Id) Id c)
|      arising from use of `.>' at <interactive>:1
|      In the definition of `it': v1 .> v2
|  
|  
|  GHC compiles the program just fine and runs it without any issues. I
|  installed GHC 5.04.2 using the RedHat 8.0 RPM's. If there's any
|  important information you may need from me, please, tell me and I
will
|  be glad to help. I've also cross-posted this to the bug section at
|  sourceforge.net, and there the module file can be found as a separate
|  file.
|  
|  Thank you,
|  Carlos
|  
|
------------------------------------------------------------------------
--------
|  
|  > class ComposePS a b c | a b -> c where
|  >     (.>) :: PSOp a -> PSOp b -> PSOp c
|  >     (V a) .> (V b) = V (a ++ b)
|  
|  > instance (ConcatPS a b c, CheckPS c Id Id d) => ComposePS a b d
|  
|
------------------------------------------------------------------------
--------
|  
|  > data PSOp a = V [String] deriving Show
|  
|  > data Id
|  > data Push t rest
|  > data Pop t rest
|  
|  
|  > class Reverse a b c | a b -> c
|  > instance                           Reverse Id b b
|  > instance Reverse a (Pop t b)  c => Reverse (Pop t a) b c
|  > instance Reverse a (Push t b) c => Reverse (Push t a) b c
|  
|
------------------------------------------------------------------------
--------
|  
|  > class ConcatPS a b c | a b -> c where
|  >     ccat :: a -> b -> c
|  > instance ConcatPS Id a a
|  > instance ConcatPS a b c => ConcatPS (Pop t a) b (Pop t c)
|  > instance ConcatPS a b c => ConcatPS (Push t a) b (Push t c)
|  
|
------------------------------------------------------------------------
--------
|  
|  > class CheckPS a b c d | a b c -> d where
|  >     check :: a -> b -> c -> d
|  >     check _ _ _ = error "oki"
|  
|  > instance Reverse a b c => CheckPS Id a b c
|  
|  -- instance CheckPS a b (Push t c) d => CheckPS (Push t a) b c d
|  
|  > instance CheckPS a (Pop t b) Id d => CheckPS (Pop t a) b Id d
|  
|  -- instance CheckPS a b c d => CheckPS (Pop t a) b (Push t c) d
|  
|  -- instance (SameType t1 t2, CheckPS a b c d) => CheckPS (Pop t1 a) b
(Push t2 c)
|  d
|  
|  > u = undefined
|  
|  > v1 :: PSOp (Pop a Id)
|  > v1 = V []
|  
|  > v2 :: PSOp Id
|  > v2 = V []
|  
|  _______________________________________________
|  Haskell mailing list
|  Haskell at haskell.org
|  http://www.haskell.org/mailman/listinfo/haskell





More information about the Glasgow-haskell-bugs mailing list