public static void Main() { DefaultEqualityComparer.SetProvider(DefaultEqualityComparer.System); var mappy = new HashMapBuilder <int, int> { { 1, 3 }, { 2, 4 } } .ToHashMap() .Add(4, 5) .Remove(2) .Alter(1, (int?o) => o) .Alter(1, (Microsoft.FSharp.Core.FSharpOption <int> o) => o) .Alter(1, o => o) .Map((k, v) => v * 3); var delta123123 = mappy.ComputeDeltaTo(HashMap.Empty <int, int>()); var(sm, dm) = mappy.ApplyDelta(delta123123); var smasdasd = HashMap.Empty <int, int>().ApplyDelta(ref delta123123); var test = new[] { 1, 2, 3, 4, 5 } .ToHashSet() .Map(i => i * 2) .Filter(i => i % 2 == 0) .Collect(i => HashSet.Single(i)) .Subtract(HashSet.Single(2)) .Alter(2, i => !i) .MapNullable(i => i < 10 ? (int?)i : null); var delta = test.ComputeDeltaTo(HashSet.Empty <int>()).Add(SetOperation <int> .Add(2131)); var sepp1 = test.ApplyDelta(ref delta); var(newState, realDelta) = test.ApplyDelta(delta); var changeableMap = new ChangeableHashMap <int, int>(new[] { (1, 2), (2, 3) });