public override IContext Reduce(IContext ctx) { var tail = BuiltIn.Tail(Cdr); if (tail == ClCell.Nil || BuiltIn.Cdr(tail) != ClCell.Nil) { throw new SyntaxError("Invalid body of the let special form"); } var beginBody = VariableDefinitionExpressions().Append(BuiltIn.Car(tail)).ListOf(); var begin = new ClCell(ClSymbol.Begin, beginBody); var lambda = BuiltIn.ListOf(ClSymbol.Lambda, ClCell.Nil, begin); return(BuiltIn.ListOf(lambda).Reduce(ctx)); }