TVar package:effectful

Shared memory locations that support atomic memory transactions.
Lifted mkWeakTVar. Note: the finalizer will run a cloned environment, so any changes it makes to thread local data will not be visible outside of it.
Mutate the contents of a TVar. N.B., this version is non-strict.
Strict version of modifyTVar.
Create a new TVar holding a value supplied
Return the current value stored in a TVar.
Swap the contents of a TVar for a new value.
Write the supplied value into a TVar.