示例#1
0
文件: Car.cs 项目: nja/keel
 public static LispObject Of(LispObject x)
 {
     return x.As<Cons>().Car;
 }
示例#2
0
        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>());
            }
        }