public static Unit sync(Action op, Isolation isolation = Isolation.Snapshot) => STM.DoTransaction(() => { op(); return(unit); }, isolation);
public static Task <R> sync <R>(Func <Task <R> > op, Isolation isolation = Isolation.Snapshot) => STM.DoTransaction(async() => await op().ConfigureAwait(false), isolation).AsTask();
public static Task <Unit> sync(Func <Task> op, Isolation isolation = Isolation.Snapshot) => STM.DoTransaction(async() => { await op().ConfigureAwait(false); return(unit); }, isolation).AsTask();
public static ValueTask <R> sync <R>(Func <ValueTask <R> > op, Isolation isolation = Isolation.Snapshot) => STM.DoTransaction(op, isolation);
public static Aff <RT, R> sync <RT, R>(Aff <RT, R> op, Isolation isolation = Isolation.Snapshot) where RT : struct, HasCancel <RT> => STM.DoTransaction(op, isolation);
public static Aff <R> sync <R>(Aff <R> op, Isolation isolation = Isolation.Snapshot) => STM.DoTransaction(op, isolation);
public static Eff <RT, R> sync <RT, R>(Eff <RT, R> op, Isolation isolation = Isolation.Snapshot) where RT : struct => STM.DoTransaction(op, isolation);
public static Ref <A> Ref <A>(A value, Func <A, bool> validator = null) => STM.NewRef(value);