Trash/DDC/ClosureTyping
Region sharing
Closure typing is used to track the sharing of regions between function calls.
Consider the following function:
f ()
= do x = 5
g () = x
g
Without closure information this function would have the following type:
f :: forall %r1. () -> () -> Int %r1