Determines if the scope is closed at the instant the effect executes.
Prevents a previously added finalizer from being executed when the scope is closed.
Determines if the scope is empty (has no finalizers) at the instant the effect executes.
Adds a finalizer to the scope.
Adds a finalizer to the scope. If successful, this ensures that when the scope exits, the finalizer will be run, assuming the key has not been garbage collected.
The returned effect will succeed with a key if the finalizer was added
to the scope, and None if the scope is already closed.
Extends the specified scope so that it will not be closed until this scope is closed.
Extends the specified scope so that it will not be closed until this scope is closed. Note that extending a scope into the global scope will result in the scope *never* being closed!
Scope extension does not result in changes to the scope contract: open scopes must *always* be closed.
Determines if the scope is open at the moment the effect is executed.
Determines if the scope is open at the moment the effect is executed.
Returns an effect that will succeed with true if the scope is open,
and false otherwise.
Determines if the scope has been released at the moment the effect is executed executed.