Can someone explain why the type declaration for `g` is required in the following?
class RT r t where rt :: r -> t data D t = Dt t | forall r. RT r t => Dr r f :: D t -> D t f = g where -- g :: D t -> D t g (Dr r) = Dt (rt r) As given above, the program evokes these error messages: with GHC 5.04.2: Bug4.hs:10: Could not deduce (RT r t1) from the context (RT r t) Probable fix: Add (RT r t1) to the existential context of a data constructor arising from use of `rt' at Bug4.hs:10 In the first argument of `Dt', namely `(rt r)' In the definition of `g': Dt (rt r) with Hugs: ERROR "Bug4.hs":6 - Cannot justify constraints in explicitly typed binding *** Expression : f *** Type : D a -> D a *** Given context : () *** Constraints : RT _6 a -- Dean _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell