コード例 #1
0
ファイル: NewType.cs プロジェクト: trimonovds/language-ext
        public NewType <T> SelectMany(
            Func <T, NewType <T> > bind,
            Func <T, T, T> project
            )
        {
            var ures = bind(Value);

            if (GetType() != ures.GetType())
            {
                throw new Exception("LINQ statement with mismatched NewTypes");
            }
            return((NewType <T>)NewType.Construct(GetType(), project(Value, ures.Value)));
        }
コード例 #2
0
ファイル: NewType.cs プロジェクト: trimonovds/language-ext
 public NewType <T> Select(Func <T, T> map) =>
 (NewType <T>) NewType.Construct(GetType(), map(Value));
コード例 #3
0
 public static S fold <NEWTYPE, T, S, PRED>(NewType <NEWTYPE, T, PRED> value, S state, Func <S, T, S> folder)
     where PRED : struct, Pred <T>
     where NEWTYPE : NewType <NEWTYPE, T, PRED> =>
 value.Fold(state, folder);
コード例 #4
0
 public static bool forall <NEWTYPE, T, PRED>(NewType <NEWTYPE, T, PRED> value, Func <T, bool> predicate)
     where PRED : struct, Pred <T>
     where NEWTYPE : NewType <NEWTYPE, T, PRED> =>
 predicate((T)value);
コード例 #5
0
 public static NEWTYPE bind <NEWTYPE, T, PRED>(NewType <NEWTYPE, T, PRED> value, Func <T, NEWTYPE> bind)
     where PRED : struct, Pred <T>
     where NEWTYPE : NewType <NEWTYPE, T, PRED> =>
 value.Bind(bind);
コード例 #6
0
 public static NewType <T> divide <T>(NewType <T> value, NewType <T> rhs) =>
 value.Divide(rhs);
コード例 #7
0
 public static NewType <T> append <T>(NewType <T> value, NewType <T> rhs) =>
 value.Append(rhs);
コード例 #8
0
 public static NewType <T> map <T>(NewType <T> value, Func <T, T> map) =>
 value.Map(map);
コード例 #9
0
ファイル: NewType.cs プロジェクト: trimonovds/language-ext
 public static S Fold <T, S>(this NewType <T> self, S state, Func <S, T, S> folder) =>
 folder(state, self.Value);
コード例 #10
0
ファイル: NewType.cs プロジェクト: trimonovds/language-ext
 public NewType <T> Multiply(NewType <T> rhs) =>
 GetType() == rhs.GetType()
         ? (NewType <T>) NewType.Construct(GetType(), TypeDesc.Multiply(Value, rhs.Value, TypeDesc <T> .Default))
         : failwith <NewType <T> >("Mismatched NewTypes in multiply");
コード例 #11
0
ファイル: NewType.cs プロジェクト: trimonovds/language-ext
 public NewType <T> Divide(NewType <T> rhs) =>
 GetType() == rhs.GetType()
         ? (NewType <T>) NewType.Construct(GetType(), TypeDesc.Divide(Value, rhs.Value, TypeDesc <T> .Default))
         : failwith <NewType <T> >("Mismatched NewTypes in divide");
コード例 #12
0
ファイル: NewType.cs プロジェクト: trimonovds/language-ext
 public NewType <T> Subtract(NewType <T> rhs) =>
 GetType() == rhs.GetType()
         ? (NewType <T>) NewType.Construct(GetType(), TypeDesc.Subtract(Value, rhs.Value, TypeDesc <T> .Default))
         : failwith <NewType <T> >("Mismatched NewTypes in subtract");
コード例 #13
0
ファイル: NewType.cs プロジェクト: trimonovds/language-ext
 public NewType <T> Append(NewType <T> rhs) =>
 GetType() == rhs.GetType()
         ? (NewType <T>) NewType.Construct(GetType(), TypeDesc.Append(Value, rhs.Value, TypeDesc <T> .Default))
         : failwith <NewType <T> >("Mismatched NewTypes in append/add");
コード例 #14
0
 public static bool exists <T>(NewType <T> value, Func <T, bool> predicate) =>
 predicate(value.Value);
コード例 #15
0
ファイル: NewType.cs プロジェクト: trimonovds/language-ext
 public static int Sum(this NewType <int> self) =>
 self.Value;
コード例 #16
0
 public static bool forall <T>(NewType <T> value, Func <T, bool> predicate) =>
 predicate(value.Value);
コード例 #17
0
ファイル: NewType.cs プロジェクト: trimonovds/language-ext
 public int CompareTo(NewType <T> other) =>
 !ReferenceEquals(other, null) &&
 GetType() == other.GetType()
         ? Comparer <T> .Default.Compare(Value, other.Value)
         : failwith <int>("Mismatched NewTypes used in comparison");
コード例 #18
0
 public static S fold <T, S>(NewType <T> value, S state, Func <S, T, S> folder) =>
 value.Fold(state, folder);
コード例 #19
0
ファイル: NewType.cs プロジェクト: trimonovds/language-ext
 public bool Equals(NewType <T> other) =>
 !ReferenceEquals(other, null) &&
 GetType() == other.GetType() &&
 Value.Equals(other.Value);
コード例 #20
0
 public static NewType <T> subtract <T>(NewType <T> value, NewType <T> rhs) =>
 value.Subtract(rhs);
コード例 #21
0
 public static NewType <T> bind <T>(NewType <T> value, Func <T, NewType <T> > bind) =>
 value.Bind(bind);
コード例 #22
0
 public static NewType <T> multiply <T>(NewType <T> value, NewType <T> rhs) =>
 value.Multiply(rhs);
コード例 #23
0
 public static Unit iter <T>(NewType <T> value, Action <T> f) =>
 value.Iter(f);
コード例 #24
0
 public static Unit iter <NEWTYPE, T, PRED>(NewType <NEWTYPE, T, PRED> value, Action <T> f)
     where PRED : struct, Pred <T>
     where NEWTYPE : NewType <NEWTYPE, T, PRED> =>
 value.Iter(f);
コード例 #25
0
 public static int count <T>(NewType <T> value) =>
 1;
コード例 #26
0
 public static NEWTYPE map <NEWTYPE, T, PRED>(NewType <NEWTYPE, T, PRED> value, Func <T, T> map)
     where PRED : struct, Pred <T>
     where NEWTYPE : NewType <NEWTYPE, T, PRED> =>
 value.Map(map);
コード例 #27
0
 public static int sum(NewType <int> value) =>
 value.Value;
コード例 #28
0
 public static bool equals <NEWTYPE, EQ, A, PRED>(NewType <NEWTYPE, A, PRED> x, NewType <NEWTYPE, A, PRED> y)
     where EQ      : struct, Eq <A>
     where PRED    : struct, Pred <A>
     where NEWTYPE : NewType <NEWTYPE, A, PRED>
 =>
 !ReferenceEquals(x, y) || ReferenceEquals(x, null) || ReferenceEquals(y, null)
         ? false
 : default(EQ).Equals((A)x, (A)y);
コード例 #29
0
 public static NEWTYPE append <NEWTYPE, SEMI, A>(NewType <NEWTYPE, A> x, NewType <NEWTYPE, A> y)
     where NEWTYPE : NewType <NEWTYPE, A>
     where SEMI : struct, Semigroup <A> =>
 from a in x
 from b in y
 select default(SEMI).Append(a, b);