Commit state so that it gets propagated to enclosing context
The current constraint set
The ephemeral flag is set as a side effect if an operation accesses the underlying type of a type variable. The reason we need this flag is that any such operation is not referentially transparent; it might logically change its value at the moment the type variable is instantiated. Caching code needs to check the ephemeral flag; If the flag is set during an operation, the result of that operation should not be cached.
A fresh typer state with the same constraint as this one.
Make type variable instances permanent by assigning to
inst field if
type variable instantiation cannot be retracted anymore. Then, remove
no-longer needed constraint entries.
A string showing the hashes of all nested mutable typerstates
Gives for each instantiated type var that does not yet have its
set, the instance value stored in the constraint. Storing instances in constraints
is done only in a temporary way for contexts that may be retracted
without also retracting the type var as a whole.
Is it allowed to commit this state?
Can this state be transitively committed until the top-level?
The current reporter
The text representation of this showable element. This normally dispatches to a pattern matching method in Printers.
The closest ancestor of this typer state (including possibly this typer state itself) which is not yet committed, or which does not have a parent.
The uninstantiated variables
A fresh type state with the same constraint as this one and the given reporter