public static LispObject Of(LispObject x) { return x.As<Cons>().Car; }
public void Extend(LispObject lambdaList, Cons values) { if (lambdaList.IsNil) { if (values.IsNil) { return; } throw new EnvironmentException("Too many values when extending environment"); } if (lambdaList.IsAtom) { this.AddBinding(lambdaList.As<Symbol>(), values); } else { if (values.IsNil) { throw new EnvironmentException("Too few values when extending environment"); } this.AddBinding(Car.Of(lambdaList).As<Symbol>(), values.Car); this.Extend(Cdr.Of(lambdaList), values.Cdr.As<Cons>()); } }