I wish to add to Christian's question:

why is it not possible to annotate v with its full type:

info :: (Collects e ce, Show e) => ce -> String
info (v::(Collects e ce, Show e) => ce) = show ((one v)::e) 

I then get the error message

    All of the type variables in the constraint `Collects e
                                                          ce' are already in scope
        (at least one must be universally quantified here)
    In the type: (Collects e ce) => ce
    While checking a pattern type signature
    When checking the pattern: v :: forall. (Collects e ce) => ce
    In the definition of `info':
        info (v :: forall. (Collects e ce) => ce) = show ((one v) :: e)

(and a similar message for the constraint Show e),
which I do not understand - why should e and ce be already in scope?

(I think that this question is actually independent of functional
dependencies - it is about type class constraints).

Till
-- 
Till Mossakowski                Phone +49-421-218-4683
Dept. of Computer Science       Fax +49-421-218-3054
University of Bremen            [EMAIL PROTECTED]           
P.O.Box 330440, D-28334 Bremen  http://www.tzi.de/~till
_______________________________________________
Glasgow-haskell-users mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to