#1613: Derived types unequal with let binding
---------------------------------+------------------------------------------
Reporter: [EMAIL PROTECTED] | Owner:
Type: support request | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 6.7
Severity: major | Keywords:
Difficulty: Unknown | Os: Unknown
Testcase: | Architecture: Unknown
---------------------------------+------------------------------------------
The types of x and y are different. This breaks the replacing equals with
equals gives equals property. I am not sure whether this is a bug, but I
would be very keen to know whether it is.
{{{
class X l z b m | l -> z b where
p:: (Show a, Show b, Show b') => l a b -> m (l a b')
e::(Show a, Show b) => l a b -> m [z]
foo :: (X l a b m, Show b, Show a1) => [a] -> l a1 b -> m [(Int, Int, b)]
foo = undefined
o :: (Show z1, Show b, X l z b m) =>(Int, Int, b) -> l a1 b -> m (l z1 b)
o = undefined
x f r = do
es <- e r
something <- p r
xxx <- foo es r
foldM
(flip o)
something
(map f xxx)
y f r = do
es <- e r
something <- p r
xxx <- foo es r
let abc = map f xxx
foldM
(flip o)
something
abc
}}}
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/1613>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs