Ejemplo n.º 1
0
 static ExprList MergeArgs(
     CoreBuilder b,
     IEnumerable<Expr> args,
     Func<Expr, ExprList?> getArgs,
     BigRational aggregateSeed,
     Func<BigRational, BigRational, BigRational> aggregate,
     Func<IEnumerable<Expr>, IEnumerable<Expr>> group) {
     var mergedArgs = args
         .SelectMany(x => getArgs(x) ?? x.Yield());
     var @const = mergedArgs
         .Select(x => x.AsConst())
         .Where(x => x != null)
         .Select(x => x.Value)
         .Aggregate(aggregateSeed, aggregate);
     var other = group(mergedArgs.Where(x => !x.IsConst()));
     return (@const == aggregateSeed && other.Any() ? other : Const(@const).Yield().Concat(other)).ToExprList();
 }
Ejemplo n.º 2
0
 SingleDivTransformer(CoreBuilder builder, bool openBraces) {
     this.openBraces = openBraces;
     this.builder = builder;
 }