Exception handling
This commit is contained in:
+27
-1
@@ -62,10 +62,36 @@ DEFUN(nreverse, "nreverse", (LispVal * list), "(list)", "") {
|
||||
return rev;
|
||||
}
|
||||
|
||||
DEFUN(last, "last", (LispVal * list), "(list)", "") {
|
||||
if (NILP(list)) {
|
||||
return Qnil;
|
||||
}
|
||||
CHECK_LISTP(list);
|
||||
while (CONSP(XCDR(list))) {
|
||||
list = XCDR(list);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
DEFUN(listp, "listp", (LispVal * obj), "(obj)", "") {
|
||||
return LISTP(obj) ? Qt : Qnil;
|
||||
}
|
||||
|
||||
DEFUN(proper_list_p, "proper-list-p", (LispVal * obj), "(obj)", "") {
|
||||
CHECK_LISTP(obj);
|
||||
return (NILP(Fcircular_list_p(obj)) && NILP(XCDR(Flast(obj)))) ? Qt : Qnil;
|
||||
}
|
||||
|
||||
DEFUN(circular_list_p, "circular-list-p", (LispVal * obj), "(obj)", "") {
|
||||
CHECK_LISTP(obj);
|
||||
return list_length(obj) == -1 ? Qt : Qnil;
|
||||
}
|
||||
|
||||
DEFUN(dotted_list_p, "dotted-list-p", (LispVal * obj), "(obj)", "") {
|
||||
CHECK_LISTP(obj);
|
||||
return (NILP(Fcircular_list_p(obj)) && !NILP(XCDR(Flast(obj)))) ? Qt : Qnil;
|
||||
}
|
||||
|
||||
DEFUN(list, "list", (LispVal * args), "(&rest args)", "") {
|
||||
return args;
|
||||
}
|
||||
@@ -81,7 +107,7 @@ LispVal *nth(size_t n, LispVal *list) {
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
DEFUN(nth, "list", (LispVal * n, LispVal *list), "(n list)", "") {
|
||||
DEFUN(nth, "nth", (LispVal * n, LispVal *list), "(n list)", "") {
|
||||
CHECK_TYPE(n, TYPE_FIXNUM);
|
||||
return nth(XFIXNUM(n), list);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user