object nconc(object x, object y) { object x1; if (endp(x)) return(y); for (x1 = x; type_of(x1->c.c_cdr)==t_cons; x1 = x1->c.c_cdr) ; x1->c.c_cdr = y; return(x); } void Lnconc() { object x, l, m=Cnil; int i, narg; narg = vs_top - vs_base - 1; if (narg < 0) { vs_push(Cnil); return; } x = Cnil; for (i = 0; i < narg; i++) { l = vs_base[i]; if (type_of(l) != t_cons) continue; if (x == Cnil) x = m = l; else { m->c.c_cdr = l; m = l; } for (; (type_of(m->c.c_cdr)==t_cons) ; m = m->c.c_cdr) ; } if (x == Cnil) vs_base[0] = vs_top[-1]; else { m->c.c_cdr = vs_top[-1]; vs_base[0] = x; } vs_top = vs_base+1; } void Ltailp() { object x; check_arg(2); for (x = vs_base[1]; !endp(x); x = x->c.c_cdr) /* if (dot_list_eq(x,vs_base[0])) {*/ if (eql(fix_dot(x),vs_base[0])) { vs_base[0] = Ct; vs_popp; return; } if (vs_base[0] == Cnil && x == Cnil) vs_base[0] = Ct; else vs_base[0] = Cnil; vs_popp; return; }