43 |
|
|
44 |
#include "libguile/_scm.h" |
#include "libguile/_scm.h" |
45 |
#include "libguile/eq.h" |
#include "libguile/eq.h" |
46 |
|
#include "libguile/lang.h" |
47 |
|
|
48 |
#include "libguile/validate.h" |
#include "libguile/validate.h" |
49 |
#include "libguile/list.h" |
#include "libguile/list.h" |
166 |
"Return @code{#t} iff @var{x} is the empty list, else @code{#f}.") |
"Return @code{#t} iff @var{x} is the empty list, else @code{#f}.") |
167 |
#define FUNC_NAME s_scm_null_p |
#define FUNC_NAME s_scm_null_p |
168 |
{ |
{ |
169 |
return SCM_BOOL (SCM_NULLP (x)); |
return SCM_BOOL (SCM_NULL_OR_NIL_P (x)); |
170 |
} |
} |
171 |
#undef FUNC_NAME |
#undef FUNC_NAME |
172 |
|
|
193 |
SCM hare = sx; |
SCM hare = sx; |
194 |
|
|
195 |
do { |
do { |
196 |
if (SCM_NULLP(hare)) return i; |
if (SCM_NULL_OR_NIL_P(hare)) return i; |
197 |
if (SCM_NCONSP(hare)) return -1; |
if (SCM_NCONSP(hare)) return -1; |
198 |
hare = SCM_CDR(hare); |
hare = SCM_CDR(hare); |
199 |
i++; |
i++; |
200 |
if (SCM_NULLP(hare)) return i; |
if (SCM_NULL_OR_NIL_P(hare)) return i; |
201 |
if (SCM_NCONSP(hare)) return -1; |
if (SCM_NCONSP(hare)) return -1; |
202 |
hare = SCM_CDR(hare); |
hare = SCM_CDR(hare); |
203 |
i++; |
i++; |
260 |
lloc = SCM_CDRLOC (*lloc); |
lloc = SCM_CDRLOC (*lloc); |
261 |
arg = SCM_CDR (arg); |
arg = SCM_CDR (arg); |
262 |
} |
} |
263 |
SCM_VALIDATE_NULL (SCM_ARGn, arg); |
SCM_VALIDATE_NULL_OR_NIL (SCM_ARGn, arg); |
264 |
arg = SCM_CAR (args); |
arg = SCM_CAR (args); |
265 |
args = SCM_CDR (args); |
args = SCM_CDR (args); |
266 |
}; |
}; |
289 |
lists = SCM_CDR (lists); |
lists = SCM_CDR (lists); |
290 |
if (SCM_NULLP (lists)) { |
if (SCM_NULLP (lists)) { |
291 |
return arg; |
return arg; |
292 |
} else if (!SCM_NULLP (arg)) { |
} else if (!SCM_NULL_OR_NIL_P (arg)) { |
293 |
SCM_VALIDATE_CONS (SCM_ARG1, arg); |
SCM_VALIDATE_CONS (SCM_ARG1, arg); |
294 |
SCM_SETCDR (scm_last_pair (arg), scm_append_x (lists)); |
SCM_SETCDR (scm_last_pair (arg), scm_append_x (lists)); |
295 |
return arg; |
return arg; |
309 |
SCM tortoise = lst; |
SCM tortoise = lst; |
310 |
SCM hare = lst; |
SCM hare = lst; |
311 |
|
|
312 |
if (SCM_NULLP (lst)) |
if (SCM_NULL_OR_NIL_P (lst)) |
313 |
return SCM_EOL; |
return lst; |
314 |
|
|
315 |
SCM_VALIDATE_CONS (SCM_ARG1, lst); |
SCM_VALIDATE_CONS (SCM_ARG1, lst); |
316 |
do { |
do { |
341 |
SCM hare = lst; |
SCM hare = lst; |
342 |
|
|
343 |
do { |
do { |
344 |
if (SCM_NULLP(hare)) return result; |
if (SCM_NULL_OR_NIL_P(hare)) return result; |
345 |
SCM_ASSERT(SCM_CONSP(hare), lst, 1, FUNC_NAME); |
SCM_ASSERT(SCM_CONSP(hare), lst, 1, FUNC_NAME); |
346 |
result = scm_cons (SCM_CAR (hare), result); |
result = scm_cons (SCM_CAR (hare), result); |
347 |
hare = SCM_CDR (hare); |
hare = SCM_CDR (hare); |
348 |
if (SCM_NULLP(hare)) return result; |
if (SCM_NULL_OR_NIL_P(hare)) return result; |
349 |
SCM_ASSERT(SCM_CONSP(hare), lst, 1, FUNC_NAME); |
SCM_ASSERT(SCM_CONSP(hare), lst, 1, FUNC_NAME); |
350 |
result = scm_cons (SCM_CAR (hare), result); |
result = scm_cons (SCM_CAR (hare), result); |
351 |
hare = SCM_CDR (hare); |
hare = SCM_CDR (hare); |
376 |
else |
else |
377 |
SCM_VALIDATE_LIST (2, new_tail); |
SCM_VALIDATE_LIST (2, new_tail); |
378 |
|
|
379 |
while (SCM_NNULLP (lst)) |
while (!SCM_NULL_OR_NIL_P (lst)) |
380 |
{ |
{ |
381 |
SCM old_tail = SCM_CDR (lst); |
SCM old_tail = SCM_CDR (lst); |
382 |
SCM_SETCDR (lst, new_tail); |
SCM_SETCDR (lst, new_tail); |
407 |
lst = SCM_CDR (lst); |
lst = SCM_CDR (lst); |
408 |
} |
} |
409 |
}; |
}; |
410 |
if (SCM_NULLP (lst)) |
if (SCM_NULL_OR_NIL_P (lst)) |
411 |
SCM_OUT_OF_RANGE (2, k); |
SCM_OUT_OF_RANGE (2, k); |
412 |
else |
else |
413 |
SCM_WRONG_TYPE_ARG (1, list); |
SCM_WRONG_TYPE_ARG (1, list); |
432 |
lst = SCM_CDR (lst); |
lst = SCM_CDR (lst); |
433 |
} |
} |
434 |
}; |
}; |
435 |
if (SCM_NULLP (lst)) |
if (SCM_NULL_OR_NIL_P (lst)) |
436 |
SCM_OUT_OF_RANGE (2, k); |
SCM_OUT_OF_RANGE (2, k); |
437 |
else |
else |
438 |
SCM_WRONG_TYPE_ARG (1, list); |
SCM_WRONG_TYPE_ARG (1, list); |
480 |
lst = SCM_CDR (lst); |
lst = SCM_CDR (lst); |
481 |
} |
} |
482 |
}; |
}; |
483 |
if (SCM_NULLP (lst)) |
if (SCM_NULL_OR_NIL_P (lst)) |
484 |
SCM_OUT_OF_RANGE (2, k); |
SCM_OUT_OF_RANGE (2, k); |
485 |
else |
else |
486 |
SCM_WRONG_TYPE_ARG (1, list); |
SCM_WRONG_TYPE_ARG (1, list); |
556 |
SCM |
SCM |
557 |
scm_c_memq (SCM obj, SCM list) |
scm_c_memq (SCM obj, SCM list) |
558 |
{ |
{ |
559 |
for (; !SCM_NULLP (list); list = SCM_CDR (list)) |
for (; !SCM_NULL_OR_NIL_P (list); list = SCM_CDR (list)) |
560 |
{ |
{ |
561 |
if (SCM_EQ_P (SCM_CAR (list), obj)) |
if (SCM_EQ_P (SCM_CAR (list), obj)) |
562 |
return list; |
return list; |
592 |
#define FUNC_NAME s_scm_memv |
#define FUNC_NAME s_scm_memv |
593 |
{ |
{ |
594 |
SCM_VALIDATE_LIST (2, lst); |
SCM_VALIDATE_LIST (2, lst); |
595 |
for (; !SCM_NULLP (lst); lst = SCM_CDR (lst)) |
for (; !SCM_NULL_OR_NIL_P (lst); lst = SCM_CDR (lst)) |
596 |
{ |
{ |
597 |
if (! SCM_FALSEP (scm_eqv_p (SCM_CAR (lst), x))) |
if (! SCM_FALSEP (scm_eqv_p (SCM_CAR (lst), x))) |
598 |
return lst; |
return lst; |
613 |
#define FUNC_NAME s_scm_member |
#define FUNC_NAME s_scm_member |
614 |
{ |
{ |
615 |
SCM_VALIDATE_LIST (2, lst); |
SCM_VALIDATE_LIST (2, lst); |
616 |
for (; !SCM_NULLP (lst); lst = SCM_CDR (lst)) |
for (; !SCM_NULL_OR_NIL_P (lst); lst = SCM_CDR (lst)) |
617 |
{ |
{ |
618 |
if (! SCM_FALSEP (scm_equal_p (SCM_CAR (lst), x))) |
if (! SCM_FALSEP (scm_equal_p (SCM_CAR (lst), x))) |
619 |
return lst; |
return lst; |