In some cases, when garbage collection is enabled, region variables with type RT_BOT are forced into arrow effects, which serves to guarantee that no dangling pointers occur during evaluation. Here is a function for which this happens:
fun app (f: 'a -> int, x: 'a) : unit -> int =
fn () => f x
Unfortunately, sometimes different region variables of type RT_BOT are unified even when they are associated with different ML type variables. When this happens, instantiation can lead to region type clashes. See issue #97.
In some cases, when garbage collection is enabled, region variables with type
RT_BOTare forced into arrow effects, which serves to guarantee that no dangling pointers occur during evaluation. Here is a function for which this happens:Unfortunately, sometimes different region variables of type
RT_BOTare unified even when they are associated with different ML type variables. When this happens, instantiation can lead to region type clashes. See issue #97.