public static A swap <A>(Ref <A> r, Func <A, A> f) => r.Swap(f);
internal CommuteRef(Ref <A> r) => Ref = r;
public static A commute <A, X, Y>(Ref <A> r, X x, Y y, Func <X, Y, A, A> f) => r.Commute(x, y, f);
public static A commute <A, X>(Ref <A> r, X x, Func <X, A, A> f) => r.Commute(x, f);
public static A commute <A>(Ref <A> r, Func <A, A> f) => r.Commute(f);
public static A swap <A, X, Y>(Ref <A> r, X x, Y y, Func <X, Y, A, A> f) => r.Swap(x, y, f);
public static A swap <A, X>(Ref <A> r, X x, Func <X, A, A> f) => r.Swap(x, f);