コード例 #1
0
        public static IMatched <IObject> Evaluate(INumeric x)
        {
            switch (x)
            {
            case Int i:
                return(Int.IntObject(-i.Value).Matched());

            case Float f:
                return(Float.FloatObject(-f.Value).Matched());

            case Long l:
                return(Long.LongObject(-l.Value).Matched());

            case Complex c:
                return(c.Negate().Matched());

            case Rational r:
                return(r.Negate().Matched());

            default:
                return(failedMatch <IObject>(notNumeric((IObject)x)));
            }
        }
コード例 #2
0
        public override void RegisterMessages()
        {
            base.RegisterMessages();

            messageNumberMessages();
            compareMessages();
            numericConversionMessages();

            registerMessage("numerator".get(), (obj, _) => function <Rational>(obj, r => Long.LongObject(r.Numerator)));
            registerMessage("denominator".get(), (obj, _) => function <Rational>(obj, r => Long.LongObject(r.Denominator)));
        }
コード例 #3
0
 public IObject Parse(string source) => Long.LongObject(BigInteger.Parse(source));