Yield a regional computation that returns a new regional reference that
stores the given value.

Note that the reference is parameterized by the same region in which it was
created. This ensures you can never use this reference outside that region and
it allows you to use this reference in a child region of that region

Atomically modifies the contents of the given regional reference using the
given function.

This function is useful for using a regional reference in a safe way in a
multithreaded program. If you only have one regional reference, then using
atomicModifyRegionRef to access and modify it will prevent race conditions.