Beispiel #1
0
        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));
            }));
        }
Beispiel #2
0
        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;
            }
        }