Can't infer type (type family + "element" type)
leather at cs.uu.nl
Tue Jan 19 05:32:03 EST 2010
On Tue, Jan 19, 2010 at 11:15, Simon Peyton-Jones <simonpj at microsoft.com>wrote:
> Looks like a bug to me! I am currently elbows-deep in re-engineering GHC's
> entire constraint generation and solving mechanism, which will, I hope,
> simply solve your problem.
> But meanwhile can I ask a favour: submit a Trac report with the offending
> code in reproducible form? Then I'll be sure to test the new code against
> all such tickets.
> | -----Original Message-----
> | From: glasgow-haskell-users-bounces at haskell.org [mailto:
> | bounces at haskell.org] On Behalf Of Sean Leather
> | Sent: 18 January 2010 16:59
> | To: GHC Users List
> | Subject: Can't infer type (type family + "element" type)
> | Suppose I have a class C,
> | > class C a where
> | > type E a
> | > c :: E a -> a -> a
> | a datatype T,
> | > data T a = T a
> | and an instance of C for T
> | > instance C (T a) where
> | > type E (T a) = a
> | > c x (T _) = T x
> | I would like to write a function such as f
> | > f t@(T x) = c x t
> | without a type signature. Unfortunately, I can't because GHC tells me
> | Couldn't match expected type `t' against inferred type `T (E t)'
> | In the second argument of `c', namely `t'
> | In the expression: c x t
> | In the definition of `f': f (t@(T x)) = c x t
> | There are at least three possible ways to write the above code such
> | that it works.
> | (1) Give a type signature for f
> | > f :: T a -> T a
> | (2) Define the class C using an equality constraint
> | > class C t where
> | > type E t
> | > c :: (E t ~ e) => e -> t -> t
> | (3) Define the class C using functional dependencies
> | > class C t e | t -> e where
> | > c :: e -> t -> t
> | But the real question is why don't I get a type for f?
> | This has been tested in GHC 6.10.1 and 6.12.1.
> | Thanks,
> | Sean
> | _______________________________________________
> | Glasgow-haskell-users mailing list
> | Glasgow-haskell-users at haskell.org
> | http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Glasgow-haskell-users