public override IConcreteFunction CreateConcrete(FunnyType[] concreteTypes) { FunctionWithSingleArg result = concreteTypes[0].BaseType switch { BaseFunnyType.Int16 => new Int16Function(), BaseFunnyType.Int32 => new Int32Function(), BaseFunnyType.Int64 => new Int64Function(), BaseFunnyType.Real => new RealFunction(), _ => throw new ArgumentOutOfRangeException() }; result.Name = CoreFunNames.Negate; result.ArgTypes = concreteTypes; result.ReturnType = concreteTypes[0]; return(result); }
public FunOfSingleArgExpressionNode(FunctionWithSingleArg fun, IExpressionNode argsNode, Interval interval) { _fun = fun; _arg1 = argsNode; Interval = interval; }