
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:jv@iai.uni-bonn.de

Janis,
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. :-)
Ah, I am terribly sorry. I just shouldn't type e-mails after having no more than a single cup of coffee. ;-) Cheers, Stefan
participants (2)
-
Janis Voigtländer
-
Stefan Holdermans