public int Compare(OptionalResult <A> x, OptionalResult <A> y) { if (x.IsBottom && y.IsBottom) { return(0); } if (x.IsBottom && !y.IsBottom) { return(-1); } if (!x.IsBottom && y.IsBottom) { return(1); } if (x.IsFaulted && y.IsFaulted) { return(0); } if (x.IsFaulted && !y.IsFaulted) { return(-1); } if (!x.IsFaulted && y.IsFaulted) { return(1); } return(default(OrdOption <A>).Compare(x.Value, y.Value)); }
/// <inheritdoc /> protected override OptionalResult <string> Render() { return(Arguments.Count switch { 0 => OptionalResult <string> .CreateWithResult("log2"), 1 => OptionalResult <string> .CreateWithResult($"log2({Arguments[0]})"), _ => OptionalResult <string> .CreateEmpty() });
/// <inheritdoc /> protected override OptionalResult <string> Render() { return(Arguments.Count switch { 0 => OptionalResult <string> .CreateWithResult("/"), 1 => OptionalResult <string> .CreateWithResult($"{Arguments[0]} /"), 2 => OptionalResult <string> .CreateWithResult($"{Arguments[0]} / {Arguments[1]}"), _ => OptionalResult <string> .CreateEmpty() });
/// <summary> /// Memoize the computation so that it's only run once /// </summary> public static TryOption <A> Memo <A>(this TryOption <A> ma) { bool run = false; OptionalResult <A> result = new OptionalResult <A>(); return(() => { if (run) { return result; } result = ma.Try(); run = true; return result; }); }
public int GetHashCode(OptionalResult <A> x) => x.IsBottom ? -2 : x.IsFaulted ? -1 : default(HashableOption <A>).GetHashCode(x.Value);
public bool Equals(OptionalResult <A> x, OptionalResult <A> y) => (x.IsBottom && y.IsBottom) || (x.IsFaulted && y.IsFaulted && default(EqTypeInfo).Equals(x.Exception.GetType().GetTypeInfo(), y.Exception.GetType().GetTypeInfo())) || (default(EqOption <A>).Equals(x.Value, y.Value));
public Task <int> CompareAsync(OptionalResult <A> x, OptionalResult <A> y) => Compare(x, y).AsTask();
public Task <int> GetHashCodeAsync(OptionalResult <A> x) => GetHashCode(x).AsTask();
public Task <bool> EqualsAsync(OptionalResult <A> x, OptionalResult <A> y) => Equals(x, y).AsTask();
public int GetHashCode(OptionalResult <A> x) => default(HashableOptionalResult <A>).GetHashCode(x);