コード例 #1
0
 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));
 }
コード例 #2
0
 /// <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()
     });
コード例 #3
0
 /// <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()
     });
コード例 #4
0
    /// <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;
        });
    }
コード例 #5
0
 public int GetHashCode(OptionalResult <A> x) =>
 x.IsBottom ? -2
   : x.IsFaulted ? -1
   : default(HashableOption <A>).GetHashCode(x.Value);
コード例 #6
0
 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));
コード例 #7
0
 public Task <int> CompareAsync(OptionalResult <A> x, OptionalResult <A> y) =>
 Compare(x, y).AsTask();
コード例 #8
0
 public Task <int> GetHashCodeAsync(OptionalResult <A> x) =>
 GetHashCode(x).AsTask();
コード例 #9
0
 public Task <bool> EqualsAsync(OptionalResult <A> x, OptionalResult <A> y) =>
 Equals(x, y).AsTask();
コード例 #10
0
ファイル: EqResult.cs プロジェクト: tqhuy1811/language-ext
 public int GetHashCode(OptionalResult <A> x) =>
 default(HashableOptionalResult <A>).GetHashCode(x);