コード例 #1
0
ファイル: Extensions.cs プロジェクト: declard/Dotnet.Func.Ext
        public static Ord Compare <type, mark>(this ROrder <type, mark> that, type l, type r)
        {
            SSemigroup <type, Infimum <mark> > semi = that;
            var inf = semi.Inf(l, r);

            return(CreateOrd(that.Equal(r, inf).Not(), that.Equal(l, inf).Not()));
        }
コード例 #2
0
ファイル: Extensions.cs プロジェクト: declard/Dotnet.Func.Ext
 public static type Add <type>(this SSemigroup <type, Additive <Unit> > semi, type l, type r) => semi.Op(l, r);
コード例 #3
0
ファイル: Extensions.cs プロジェクト: declard/Dotnet.Func.Ext
 public static type Inf <type, mark>(this SSemigroup <type, Infimum <mark> > that, type l, type r) => that.Op(l, r);
コード例 #4
0
ファイル: Extensions.cs プロジェクト: declard/Dotnet.Func.Ext
 public static type Sup <type, mark>(this SSemigroup <type, Supremum <mark> > that, type l, type r) => that.Op(l, r);
コード例 #5
0
ファイル: Extensions.cs プロジェクト: declard/Dotnet.Func.Ext
 public static type Mul <type, mark>(this SSemigroup <type, Multiplicative <mark> > neu, type l, type r) => neu.Op(l, r);
コード例 #6
0
ファイル: Extensions.cs プロジェクト: declard/Dotnet.Func.Ext
 public static type Op <type, mark>(this SSemigroup <type, mark> semi, type l, type r) => semi.BinOp(l, r);
コード例 #7
0
 public AOptMonoid(SSemigroup <val, mark> semi)
 {
     _semi = semi;
 }
コード例 #8
0
 /// <summary>
 /// Tuple_2 monadic join (requires Item1 type to be an additive semigrop)
 /// </summary>
 public static Tuple <left, right> Flatten <left, right>(this Tuple <left, Tuple <left, right> > that, SSemigroup <left, Additive <Unit> > semi) => // todo resolve semi
 that.ToPair().Map(ToPair).Flatten(semi).ToTuple();
コード例 #9
0
 /// <summary>
 /// Pair monadic join (requires left to be an additive semigrop)
 /// </summary>
 public static Pair <left, right> Flatten <left, right>(this Pair <left, Pair <left, right> > that, SSemigroup <left, Additive <Unit> > semi) => // todo resolve semi
 Pair(semi.BinOp(that.Left(), that.Right().Left()), that.Right().Right());