> In other words, the finalizer is run before the call to touch. Is
> this the expected behavior?
No. It looks like a bug, based on the spec for touch at
http://mlton.org/MLtonFinalizable
touch v
ensures that v's finalizers will not run before the call to touch.