public static IResult <Lambda> operatorLambda(Symbol operatorSymbol, OperationsBuilder builder) { var exBuilder = new ExpressionBuilder(ExpressionFlags.Standard); exBuilder.Add(new FieldSymbol("__$0")); exBuilder.Add(operatorSymbol); exBuilder.Add(new FieldSymbol("__$1")); return(exBuilder.ToExpression().Map(expression => { var invokable = new LambdaInvokable(new Parameters(2), $"$0 {operatorSymbol} $1"); return builder.RegisterInvokable(invokable, expression, true).Map(_ => new Lambda(invokable)); })); }
public override void Generate(OperationsBuilder builder) { var invokable = new LambdaInvokable(parameters, ToString()); if (builder.RegisterInvokable(invokable, block, true).If(out _, out var exception)) { builder.NewLambda(invokable); builder.Peek(Index); } else { throw exception; } }