public override Result Eval(Env env) { var x = env.QueryValue(Args.First()) as Val; if (x == null) throw new ArgumentNullException(nameof(x)); if (Args.Count() == 1) return _evalBuiltin(x.ValName, Result.Empty); var xs = env.QueryValue(Args.Skip(1).First()) as Val; if (xs == null) throw new ArgumentNullException(nameof(xs)); return _evalBuiltin(x.ValName, xs.Result); }