On 06/09/2012 14:17, Phil Clayton wrote:
Interesting. So I think there is still an issue. The attached example test-3 has two levels of phantom type and is accepted by MLton and HaMLet but not Poly/ML - neither the latest r1592, nor its predecessors with the previous fix (including r1581 that I was testing).
This doesn't affect me. I just mentioned it in case it help guide you towards a particular solution.
Thanks. I was on the right lines; just hadn't gone far enough. The latest fix (1593) seems to work and I've included your example in the regression test. What set me thinking about this was trying an example: type 'a t = int; fun f (x: real t) y = x = y; This works in 5.4.1 even though it's actually very similar to the bugs you reported. If "real" was actually present on the right hand side of the abbreviation then "real t" would not be an equality type. Poly/ML was handling equality differently to other properties because of the need to handle "ref" specially for equality.
David