public Datum Evaluate(Datum args) { var methodArgs = unwrap(args.Enumerate()); var method = type.GetRuntimeMethods().First(e => e.Name.Equals(methodName)); var result = method.Invoke(null, methodArgs); return(result == null ? Null.Instance : DatumHelpers.atom(result)); }
public Datum Evaluate(Datum args) { var methodArgs = unwrap(args.Enumerate()); var result = type.InvokeMember(methodName, BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, null, methodArgs); return(result == null ? Null.Instance : DatumHelpers.atom(result)); }
protected override Datum eval(Datum arg1, Datum arg2) { if ((arg1 as Pair) != null || (arg2 as Pair) != null) { return(DatumHelpers.atom(ReferenceEquals(arg1, arg2))); } return(DatumHelpers.atom(arg1.Equals(arg2))); }
public static Datum Lookup(this Continuation c, string name) { var env = GetEnvironment(c); if (env == null) { return(null); } Datum datum; if (env.TryLookup(name, out datum)) { return(datum); } return(DatumHelpers.atom("undefined")); }