135 |
} |
} |
136 |
|
|
137 |
#define PREDICATE(f, f_if, f_if_not, n) \ |
#define PREDICATE(f, f_if, f_if_not, n) \ |
138 |
void f_if() \ |
LFD(f_if)() \ |
139 |
{ \ |
{ \ |
140 |
if (vs_top - vs_base < n) \ |
if (vs_top - vs_base < n) \ |
141 |
too_few_arguments(); \ |
too_few_arguments(); \ |
144 |
f(); \ |
f(); \ |
145 |
} \ |
} \ |
146 |
\ |
\ |
147 |
void f_if_not() \ |
LFD(f_if_not)() \ |
148 |
{ \ |
{ \ |
149 |
if (vs_top - vs_base < n) \ |
if (vs_top - vs_base < n) \ |
150 |
too_few_arguments(); \ |
too_few_arguments(); \ |
571 |
} |
} |
572 |
} |
} |
573 |
|
|
574 |
void |
LFD(Lcar)() |
|
Lcar() |
|
575 |
{ |
{ |
576 |
check_arg(1); |
check_arg(1); |
577 |
|
|
581 |
FEwrong_type_argument(sLlist, vs_base[0]); |
FEwrong_type_argument(sLlist, vs_base[0]); |
582 |
} |
} |
583 |
|
|
584 |
void |
LFD(Lcdr)() |
|
Lcdr() |
|
585 |
{ |
{ |
586 |
check_arg(1); |
check_arg(1); |
587 |
|
|
620 |
object cdddar(x) object x; { return(cdr(cdr(cdr(car(x))))); } |
object cdddar(x) object x; { return(cdr(cdr(cdr(car(x))))); } |
621 |
object cddddr(x) object x; { return(cdr(cdr(cdr(cdr(x))))); } |
object cddddr(x) object x; { return(cdr(cdr(cdr(cdr(x))))); } |
622 |
|
|
623 |
void Lcaar(){ check_arg(1); vs_base[0] = car(car(vs_base[0])); } |
LFD(Lcaar)(){ check_arg(1); vs_base[0] = car(car(vs_base[0])); } |
624 |
void Lcadr(){ check_arg(1); vs_base[0] = car(cdr(vs_base[0])); } |
LFD(Lcadr)(){ check_arg(1); vs_base[0] = car(cdr(vs_base[0])); } |
625 |
void Lcdar(){ check_arg(1); vs_base[0] = cdr(car(vs_base[0])); } |
LFD(Lcdar)(){ check_arg(1); vs_base[0] = cdr(car(vs_base[0])); } |
626 |
void Lcddr(){ check_arg(1); vs_base[0] = cdr(cdr(vs_base[0])); } |
LFD(Lcddr)(){ check_arg(1); vs_base[0] = cdr(cdr(vs_base[0])); } |
627 |
void Lcaaar(){ check_arg(1); vs_base[0] = car(car(car(vs_base[0]))); } |
LFD(Lcaaar)(){ check_arg(1); vs_base[0] = car(car(car(vs_base[0]))); } |
628 |
void Lcaadr(){ check_arg(1); vs_base[0] = car(car(cdr(vs_base[0]))); } |
LFD(Lcaadr)(){ check_arg(1); vs_base[0] = car(car(cdr(vs_base[0]))); } |
629 |
void Lcadar(){ check_arg(1); vs_base[0] = car(cdr(car(vs_base[0]))); } |
LFD(Lcadar)(){ check_arg(1); vs_base[0] = car(cdr(car(vs_base[0]))); } |
630 |
void Lcaddr(){ check_arg(1); vs_base[0] = car(cdr(cdr(vs_base[0]))); } |
LFD(Lcaddr)(){ check_arg(1); vs_base[0] = car(cdr(cdr(vs_base[0]))); } |
631 |
void Lcdaar(){ check_arg(1); vs_base[0] = cdr(car(car(vs_base[0]))); } |
LFD(Lcdaar)(){ check_arg(1); vs_base[0] = cdr(car(car(vs_base[0]))); } |
632 |
void Lcdadr(){ check_arg(1); vs_base[0] = cdr(car(cdr(vs_base[0]))); } |
LFD(Lcdadr)(){ check_arg(1); vs_base[0] = cdr(car(cdr(vs_base[0]))); } |
633 |
void Lcddar(){ check_arg(1); vs_base[0] = cdr(cdr(car(vs_base[0]))); } |
LFD(Lcddar)(){ check_arg(1); vs_base[0] = cdr(cdr(car(vs_base[0]))); } |
634 |
void Lcdddr(){ check_arg(1); vs_base[0] = cdr(cdr(cdr(vs_base[0]))); } |
LFD(Lcdddr)(){ check_arg(1); vs_base[0] = cdr(cdr(cdr(vs_base[0]))); } |
635 |
void Lcaaaar(){check_arg(1); vs_base[0] = car(car(car(car(vs_base[0]))));} |
LFD(Lcaaaar)(){check_arg(1); vs_base[0] = car(car(car(car(vs_base[0]))));} |
636 |
void Lcaaadr(){check_arg(1); vs_base[0] = car(car(car(cdr(vs_base[0]))));} |
LFD(Lcaaadr)(){check_arg(1); vs_base[0] = car(car(car(cdr(vs_base[0]))));} |
637 |
void Lcaadar(){check_arg(1); vs_base[0] = car(car(cdr(car(vs_base[0]))));} |
LFD(Lcaadar)(){check_arg(1); vs_base[0] = car(car(cdr(car(vs_base[0]))));} |
638 |
void Lcaaddr(){check_arg(1); vs_base[0] = car(car(cdr(cdr(vs_base[0]))));} |
LFD(Lcaaddr)(){check_arg(1); vs_base[0] = car(car(cdr(cdr(vs_base[0]))));} |
639 |
void Lcadaar(){check_arg(1); vs_base[0] = car(cdr(car(car(vs_base[0]))));} |
LFD(Lcadaar)(){check_arg(1); vs_base[0] = car(cdr(car(car(vs_base[0]))));} |
640 |
void Lcadadr(){check_arg(1); vs_base[0] = car(cdr(car(cdr(vs_base[0]))));} |
LFD(Lcadadr)(){check_arg(1); vs_base[0] = car(cdr(car(cdr(vs_base[0]))));} |
641 |
void Lcaddar(){check_arg(1); vs_base[0] = car(cdr(cdr(car(vs_base[0]))));} |
LFD(Lcaddar)(){check_arg(1); vs_base[0] = car(cdr(cdr(car(vs_base[0]))));} |
642 |
void Lcadddr(){check_arg(1); vs_base[0] = car(cdr(cdr(cdr(vs_base[0]))));} |
LFD(Lcadddr)(){check_arg(1); vs_base[0] = car(cdr(cdr(cdr(vs_base[0]))));} |
643 |
void Lcdaaar(){check_arg(1); vs_base[0] = cdr(car(car(car(vs_base[0]))));} |
LFD(Lcdaaar)(){check_arg(1); vs_base[0] = cdr(car(car(car(vs_base[0]))));} |
644 |
void Lcdaadr(){check_arg(1); vs_base[0] = cdr(car(car(cdr(vs_base[0]))));} |
LFD(Lcdaadr)(){check_arg(1); vs_base[0] = cdr(car(car(cdr(vs_base[0]))));} |
645 |
void Lcdadar(){check_arg(1); vs_base[0] = cdr(car(cdr(car(vs_base[0]))));} |
LFD(Lcdadar)(){check_arg(1); vs_base[0] = cdr(car(cdr(car(vs_base[0]))));} |
646 |
void Lcdaddr(){check_arg(1); vs_base[0] = cdr(car(cdr(cdr(vs_base[0]))));} |
LFD(Lcdaddr)(){check_arg(1); vs_base[0] = cdr(car(cdr(cdr(vs_base[0]))));} |
647 |
void Lcddaar(){check_arg(1); vs_base[0] = cdr(cdr(car(car(vs_base[0]))));} |
LFD(Lcddaar)(){check_arg(1); vs_base[0] = cdr(cdr(car(car(vs_base[0]))));} |
648 |
void Lcddadr(){check_arg(1); vs_base[0] = cdr(cdr(car(cdr(vs_base[0]))));} |
LFD(Lcddadr)(){check_arg(1); vs_base[0] = cdr(cdr(car(cdr(vs_base[0]))));} |
649 |
void Lcdddar(){check_arg(1); vs_base[0] = cdr(cdr(cdr(car(vs_base[0]))));} |
LFD(Lcdddar)(){check_arg(1); vs_base[0] = cdr(cdr(cdr(car(vs_base[0]))));} |
650 |
void Lcddddr(){check_arg(1); vs_base[0] = cdr(cdr(cdr(cdr(vs_base[0]))));} |
LFD(Lcddddr)(){check_arg(1); vs_base[0] = cdr(cdr(cdr(cdr(vs_base[0]))));} |
651 |
|
|
652 |
DEFUNO_NEW("NTH",object,fLnth,LISP,2,2,NONE,OI,OO,OO,OO,void,Lnth,(fixnum index,object list),"") |
DEFUNO_NEW("NTH",object,fLnth,LISP,2,2,NONE,OI,OO,OO,OO,void,Lnth,(fixnum index,object list),"") |
653 |
{ object x = list; |
{ object x = list; |
661 |
else if (x == sLnil) RETURN1(sLnil); |
else if (x == sLnil) RETURN1(sLnil); |
662 |
else FEwrong_type_argument(sLlist, list);} |
else FEwrong_type_argument(sLlist, list);} |
663 |
} |
} |
664 |
|
#ifdef STATIC_FUNCTION_POINTERS |
665 |
|
object |
666 |
|
fLnth(fixnum index,object list) { |
667 |
|
return FFN(fLnth)(index,list); |
668 |
|
} |
669 |
|
#endif |
670 |
|
|
671 |
DEFUN_NEW("FIRST",object,fLfirst,LISP,1,1,NONE,OO,OO,OO,OO,(object x),"") |
DEFUN_NEW("FIRST",object,fLfirst,LISP,1,1,NONE,OO,OO,OO,OO,(object x),"") |
672 |
{ RETURN1(car(x)) ;} |
{ RETURN1(car(x)) ;} |
690 |
DEFUN_NEW("TENTH",object,fLtenth,LISP,1,1,NONE,OO,OO,OO,OO,(object x),"") |
DEFUN_NEW("TENTH",object,fLtenth,LISP,1,1,NONE,OO,OO,OO,OO,(object x),"") |
691 |
{ return fLnth(9,x);} |
{ return fLnth(9,x);} |
692 |
|
|
693 |
void |
LFD(Lcons)() |
|
Lcons() |
|
694 |
{ |
{ |
695 |
object x; |
object x; |
696 |
|
|
712 |
@(return x) |
@(return x) |
713 |
@) |
@) |
714 |
|
|
715 |
void |
LFD(Lendp)() |
|
Lendp() |
|
716 |
{ |
{ |
717 |
|
|
718 |
check_arg(1); |
check_arg(1); |
728 |
FEwrong_type_argument(sLlist, vs_base[0]); |
FEwrong_type_argument(sLlist, vs_base[0]); |
729 |
} |
} |
730 |
|
|
731 |
void |
LFD(Llist_length)() |
|
Llist_length() |
|
732 |
{ |
{ |
733 |
int n; |
int n; |
734 |
object fast, slow; |
object fast, slow; |
773 |
return(x->c.c_car); |
return(x->c.c_car); |
774 |
} |
} |
775 |
|
|
776 |
void |
LFD(Lnthcdr)() |
|
Lnthcdr() |
|
777 |
{ |
{ |
778 |
check_arg(2); |
check_arg(2); |
779 |
vs_base[0] = nthcdr(fixint(vs_base[0]), vs_base[1]); |
vs_base[0] = nthcdr(fixint(vs_base[0]), vs_base[1]); |
795 |
return(x); |
return(x); |
796 |
} |
} |
797 |
|
|
798 |
void |
LFD(Llast)() { |
|
Llast() { |
|
799 |
object t; |
object t; |
800 |
int n; |
int n; |
801 |
|
|
828 |
|
|
829 |
} |
} |
830 |
|
|
831 |
void |
LFD(Llist)() |
|
Llist() |
|
832 |
{ |
{ |
833 |
vs_push(Cnil); |
vs_push(Cnil); |
834 |
while (vs_top > vs_base + 1) |
while (vs_top > vs_base + 1) |
835 |
stack_cons(); |
stack_cons(); |
836 |
} |
} |
837 |
|
|
838 |
void |
LFD(LlistA)() |
|
LlistA() |
|
839 |
{ |
{ |
840 |
if (vs_top == vs_base) |
if (vs_top == vs_base) |
841 |
too_few_arguments(); |
too_few_arguments(); |
896 |
@(return x) |
@(return x) |
897 |
@) |
@) |
898 |
|
|
899 |
void |
LFD(Lappend)() |
|
Lappend() |
|
900 |
{ |
{ |
901 |
object x; |
object x; |
902 |
|
|
911 |
} |
} |
912 |
} |
} |
913 |
|
|
914 |
void |
LFD(Lcopy_list)() |
|
Lcopy_list() |
|
915 |
{ |
{ |
916 |
check_arg(1); |
check_arg(1); |
917 |
vs_base[0] = copy_list(vs_base[0]); |
vs_base[0] = copy_list(vs_base[0]); |
918 |
} |
} |
919 |
|
|
920 |
void |
LFD(Lcopy_alist)() |
|
Lcopy_alist() |
|
921 |
{ |
{ |
922 |
check_arg(1); |
check_arg(1); |
923 |
vs_base[0] = copy_alist(vs_base[0]); |
vs_base[0] = copy_alist(vs_base[0]); |
924 |
} |
} |
925 |
|
|
926 |
void |
LFD(Lcopy_tree)() |
|
Lcopy_tree() |
|
927 |
{ |
{ |
928 |
check_arg(1); |
check_arg(1); |
929 |
copy_tree(vs_base[0]); |
copy_tree(vs_base[0]); |
930 |
vs_base[0] = vs_pop; |
vs_base[0] = vs_pop; |
931 |
} |
} |
932 |
|
|
933 |
void |
LFD(Lrevappend)() { |
|
Lrevappend() { |
|
934 |
object x, y; |
object x, y; |
935 |
|
|
936 |
check_arg(2); |
check_arg(2); |
956 |
return(x); |
return(x); |
957 |
} |
} |
958 |
|
|
959 |
void |
LFD(Lnconc)() { |
|
Lnconc() { |
|
960 |
object x, l, m=Cnil; |
object x, l, m=Cnil; |
961 |
int i, narg; |
int i, narg; |
962 |
|
|
983 |
vs_top = vs_base+1; |
vs_top = vs_base+1; |
984 |
} |
} |
985 |
|
|
986 |
void |
LFD(Lreconc)() { |
|
Lreconc() { |
|
987 |
object x, y, z; |
object x, y, z; |
988 |
|
|
989 |
check_arg(2); |
check_arg(2); |
1035 |
@(return lis) |
@(return lis) |
1036 |
@) |
@) |
1037 |
|
|
1038 |
void |
LFD(Lldiff)() { |
|
Lldiff() { |
|
1039 |
int i; |
int i; |
1040 |
object x; |
object x; |
1041 |
|
|
1056 |
vs_popp; |
vs_popp; |
1057 |
} |
} |
1058 |
|
|
1059 |
void |
LFD(Lrplaca)() |
|
Lrplaca() |
|
1060 |
{ |
{ |
1061 |
check_arg(2); |
check_arg(2); |
1062 |
check_type_cons(&vs_base[0]); |
check_type_cons(&vs_base[0]); |
1065 |
vs_popp; |
vs_popp; |
1066 |
} |
} |
1067 |
|
|
1068 |
void |
LFD(Lrplacd)() |
|
Lrplacd() |
|
1069 |
{ |
{ |
1070 |
check_arg(2); |
check_arg(2); |
1071 |
check_type_cons(&vs_base[0]); |
check_type_cons(&vs_base[0]); |
1191 |
@(return list) |
@(return list) |
1192 |
@) |
@) |
1193 |
|
|
1194 |
void |
LFD(Ltailp)() { |
|
Ltailp() { |
|
1195 |
object x; |
object x; |
1196 |
|
|
1197 |
check_arg(2); |
check_arg(2); |
1209 |
return; |
return; |
1210 |
} |
} |
1211 |
|
|
1212 |
void |
LFD(Ladjoin)() |
|
Ladjoin() |
|
1213 |
{ |
{ |
1214 |
object *base = vs_base, *top = vs_top; |
object *base = vs_base, *top = vs_top; |
1215 |
|
|
1217 |
too_few_arguments(); |
too_few_arguments(); |
1218 |
while (vs_base < top) |
while (vs_base < top) |
1219 |
vs_push(*vs_base++); |
vs_push(*vs_base++); |
1220 |
Lmember1(); |
FFN(Lmember1)(); |
1221 |
if (vs_base[0] == Cnil) |
if (vs_base[0] == Cnil) |
1222 |
base[1] = make_cons(base[0], base[1]); |
base[1] = make_cons(base[0], base[1]); |
1223 |
vs_base = base+1; |
vs_base = base+1; |
1224 |
vs_top = base+2; |
vs_top = base+2; |
1225 |
} |
} |
1226 |
|
|
1227 |
void |
LFD(Lacons)() |
|
Lacons() |
|
1228 |
{ |
{ |
1229 |
check_arg(3); |
check_arg(3); |
1230 |
|
|
1274 |
@(return a_list) |
@(return a_list) |
1275 |
@) |
@) |
1276 |
|
|
1277 |
void Lassoc() { car_or_cdr = car; Lassoc_or_rassoc(); } |
LFD(Lassoc)() { car_or_cdr = car; FFN(Lassoc_or_rassoc)(); } |
1278 |
void Lrassoc() { car_or_cdr = cdr; Lassoc_or_rassoc(); } |
LFD(Lrassoc)() { car_or_cdr = cdr; FFN(Lassoc_or_rassoc)(); } |
1279 |
|
|
1280 |
static bool true_or_false; |
static bool true_or_false; |
1281 |
|
|
1295 |
@(return a_list) |
@(return a_list) |
1296 |
@) |
@) |
1297 |
|
|
1298 |
void Lassoc_if() { car_or_cdr = car; true_or_false = TRUE; Lassoc_or_rassoc_predicate(); } |
LFD(Lassoc_if)() { car_or_cdr = car; true_or_false = TRUE; FFN(Lassoc_or_rassoc_predicate)(); } |
1299 |
void Lassoc_if_not() { car_or_cdr = car; true_or_false = FALSE; Lassoc_or_rassoc_predicate(); } |
LFD(Lassoc_if_not)() { car_or_cdr = car; true_or_false = FALSE; FFN(Lassoc_or_rassoc_predicate)(); } |
1300 |
void Lrassoc_if() { car_or_cdr = cdr; true_or_false = TRUE; Lassoc_or_rassoc_predicate(); } |
LFD(Lrassoc_if)() { car_or_cdr = cdr; true_or_false = TRUE; FFN(Lassoc_or_rassoc_predicate)(); } |
1301 |
void Lrassoc_if_not() { car_or_cdr = cdr; true_or_false = FALSE; Lassoc_or_rassoc_predicate(); } |
LFD(Lrassoc_if_not)() { car_or_cdr = cdr; true_or_false = FALSE; FFN(Lassoc_or_rassoc_predicate)(); } |
1302 |
|
|
1303 |
bool |
bool |
1304 |
member_eq(x, l) |
member_eq(x, l) |
1312 |
} |
} |
1313 |
|
|
1314 |
static void |
static void |
1315 |
siLmemq() |
FFN(siLmemq)() |
1316 |
{ |
{ |
1317 |
object x, l; |
object x, l; |
1318 |
|
|