//Return all but the first element in a list lval* builtin_tail(lenv* e, lval* a) { LASSERT_NUM("tail", a, 1); LASSERT_TYPE("tail", a, 0, LVAL_QEXPR); LASSERT_NOT_EMPTY("tail", a, 0); lval* v = lval_take(a, 0); lval_del(lval_pop(v, 0)); return v; }
lval* builtin_init(lenv* e, lval* a) { LASSERT_NUM("init", a, 1); LASSERT_TYPE("init", a, 0, LVAL_QEXPR); LASSERT_NOT_EMPTY("init", a, 0); lval* x = lval_take(a, 0); lval_pop(x, x->count-1); return x; }
lval* builtin_head(lenv* e, lval* a) { LASSERT_NUM("head", a, 1); LASSERT_TYPE("head", a, 0, LVAL_QEXPR); LASSERT_NOT_EMPTY("head", a, 0); lval* v = lval_take(a, 0); while (v->count > 1) { lval_del(lval_pop(v, 1)); } return v; }