static pSlipObject list_of_values(pSlip gd, pSlipObject exps, pSlipEnvironment env) { if (is_no_operands(gd, exps) == S_TRUE) { return gd->singleton_EmptyList; } else { pSlipObject x; x = slip_eval(gd, first_operand(exps), env); if (x == NULL) x = gd->singleton_Nil; return cons(gd, x, list_of_values(gd, rest_operands(exps), env)); } }
object *list_of_values(object *exps, object *env) { return is_no_operands(exps) ? empty_list() : cons(eval(first_operand(exps), env), list_of_values(rest_operands(exps), env)); }