public override void RegisterClassMessages() { base.RegisterClassMessages(); classMessages["min".get()] = (_, _) => Int.IntObject(int.MinValue); classMessages["max".get()] = (_, _) => Int.IntObject(int.MaxValue); classMessages["parse"] = (_, msg) => parse(msg.Arguments[0].AsString); }
public Sequence(int count, IObject offset) : base((ICollection)Array.Empty) { this.count = count; factor = Int.IntObject(1); this.offset = offset; i = 0; }
public override IMatched <IObject> Execute(Machine machine, IObject x, IObject y) { if (x is INumeric n1 && y is INumeric n2 && n1.IsPrimitive && n2.IsPrimitive) { var dx = n1.AsInt32(); var dy = n2.AsInt32(); return(Int.IntObject(dx / dy).Matched()); }
public override IMatched <IObject> Execute(Machine machine, IObject value) { if (value is Int i) { return(Int.IntObject(~i.Value).Matched()); } else { return(failedMatch <IObject>(incompatibleClasses(value, "Int"))); } }
public override IMaybe <IObject> Next() { if (i < count) { return(Int.IntObject(i++ *factor + offset).Some()); } else { return(none <IObject>()); } }
public override IMatched <IObject> Execute(Machine machine, IObject x, IObject y) { if (x is IObjectCompare cx) { return(Int.IntObject(cx.Compare(y)).Matched()); } else { return(sendMessage(x, "<>", y).Matched()); } }
public static IObject parse(string value) { try { var number = int.Parse(value.Replace("_", "")); return(Success.Object(Int.IntObject(number))); } catch (Exception exception) { return(Failure.Object(exception.Message)); } }
public override IMaybe <IObject> Next() { if (i < count) { var result = sendMessage(Int.IntObject(i++), "*", factor); result = sendMessage(result, "+", offset); return(result.Some()); } else { return(none <IObject>()); } }
public override IMaybe <IObject> Next() { var result = base.Next(); if (result.If(out var value)) { var newIndex = Int.IntObject(index - 1); var x = new NameValue("index", newIndex); var y = new NameValue("value", value); return(Tuple.NewTuple(x, y).Some()); } else { return(result); } }
public virtual void RegisterMessages() { registerMessage("string".get(), (obj, _) => String.StringObject(obj.AsString)); registerMessage("image".get(), (obj, _) => String.StringObject(obj.Image)); registerMessage("hash".get(), (obj, _) => Int.IntObject(obj.Hash)); registerMessage("equals(_)", (obj, _) => Boolean.BooleanObject(obj.IsEqualTo(_.Arguments[0]))); registerMessage("className".get(), (obj, _) => String.StringObject(obj.ClassName)); registerMessage("class".get(), (obj, _) => new Class(obj.ClassName)); registerMessage("match(_)", match); messages["isNumber".get()] = (_, _) => Boolean.False; registerMessage("send(_,_)", (obj, _) => function <IObject, String>(obj, _, (o, n) => sendMessage(o, n.Value, _.Arguments.Pass(1)))); registerMessage("respondsTo(_)", (obj, _) => (Boolean)classOf(obj).RespondsTo(_.Arguments[0].AsString)); registerMessage("seq(_)", (obj, _) => new OpenRange(obj, (Lambda)_.Arguments[0])); registerMessage("format(_)", (obj, _) => format(obj, _.Arguments[0].AsString)); }
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))); } }
public IObject Parse(string source) => Int.IntObject(source.ToInt());
public IObject Times(int count) { return(new Objects.Tuple(Enumerable.Range(0, count).Select(_ => Int.IntObject(random.Next())).ToArray())); }
public IMaybe <IObject> Peek(int index) => Int.IntObject(random.Next()).Some();
IMaybe <IObject> ICollection.Next(int index) => Int.IntObject(random.Next()).Some();