Open robsimmons opened 12 years ago
A related error is that this doesn't check, even though, intuitively (speaking as a user) it should:
(*[ val f: unit -> true -> true ]*)
fun f x =
let
val (q (*[ <: true -> true ]*), _) = ((fn x => x), 3)
in q end
Workaround:
(*[ val f: unit -> true -> true ]*)
fun f x =
let
val (q , _) (*[ <: (true -> true) * int ]*) = ((fn x => x), 3)
in q end
Rowan says the problem here is that it doesn't identify that I need to now be checking against
(true * int)
. Ideally it would know to check against(true * int)
, but it should at least give a warning.