Stefan Holdermans wrote:
The point of this discussion is that the Eval constraint needs to be
on one
of the functions. So I tried to specify that (x -> Int) and (y ->
Int) are
different types despite x and y being the same type, because one of
them has
an Eval constraint. This may be a shortcoming of Haskell (or System Fc?)
types, although it may be doable with a newtype.
That was kind of what my thinking out loud was getting at. If you want x
-> Int and y -> Int to be different types even if x and y actually are
the same type, then apparently you want x -> Int and y -> Int to be
built from different function-space constructors, say -> and ->*,
yielding x -> Int and y ->* Int. Replacing equals for equals again, you
get x -> Int and x ->* Int. So, basically, we are annotating function
types, what is IIRC exactly what Janis and David are doing. (I hope
Janis corrects me if I'm wrong here).
Wrong only in that David's name is Daniel. :-)
Other than that, I agree.
Best,
Janis.
--
Jun.-Prof. Dr. Janis Voigtländer
http://www.iai.uni-bonn.de/~jv/
mailto:j...@iai.uni-bonn.de
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe