
Simon Peyton-Jones proposes a solution to my overlapping/incompatible fundeps in math. setting:
Meanwhile, why couldn't you have this:
instance (Vspace a v) => Vspace a (c->v) instance Vspace Int Int instance Vspace Float Float etc
That is, one instance for each base type? You only have a finite number of base types, so this might not be too bad.
RRright! It works. Thank you. I have still some problems elsewhere, but I must understand better all their context. It seems that there is still some place for the development of Haskell type systems. Math reasoning, algebraic hierarchies, etc. often use some "natural" subsumptions, which are not so natural from the perspective of Hindley-Milner and its extensions, classes included... === I would like to thank also Oleg for his remarks concerning the keyword arguments, etc. I read all this with pleasure, but, frankly, this machinery is too horrible for me to use directly. I don't think that I can accept effectively the vision:
The gist of our implementation is the realization that the type of a function is a polymorphic collection of its argument types -- a collection that we can traverse.
although this may be the departure point for a "less opaque" representation of functions, probably useful in math... Jerzy Karczmarczuk