This uses the "tortoise and hare" algorithm to detect "infinitely
long" lists (i.e. lists with cycles in their cdrs), and returns -1
if it does find one. */
-scm_bits_t
-scm_ilength (SCM sx)
+long
+scm_ilength(SCM sx)
{
- scm_bits_t i = 0;
+ long i = 0;
SCM tortoise = sx;
SCM hare = sx;
"Return the number of elements in list @var{lst}.")
#define FUNC_NAME s_scm_length
{
- scm_bits_t i;
+ long i;
SCM_VALIDATE_LIST_COPYLEN (1,lst,i);
return SCM_MAKINUM (i);
}
#define FUNC_NAME s_scm_list_ref
{
SCM lst = list;
- register scm_bits_t i;
+ unsigned long int i;
SCM_VALIDATE_INUM_MIN_COPY (2,k,0,i);
while (SCM_CONSP (lst)) {
if (i == 0)
#define FUNC_NAME s_scm_list_set_x
{
SCM lst = list;
- register scm_bits_t i;
+ unsigned long int i;
SCM_VALIDATE_INUM_MIN_COPY (2,k,0,i);
while (SCM_CONSP (lst)) {
if (i == 0) {
"or returning the results of cdring @var{k} times down @var{lst}.")
#define FUNC_NAME s_scm_list_tail
{
- register scm_bits_t i;
+ register long i;
SCM_VALIDATE_INUM_MIN_COPY (2,k,0,i);
while (i-- > 0) {
SCM_VALIDATE_CONS (1,lst);
#define FUNC_NAME s_scm_list_cdr_set_x
{
SCM lst = list;
- scm_bits_t i;
+ unsigned long int i;
SCM_VALIDATE_INUM_MIN_COPY (2,k,0,i);
while (SCM_CONSP (lst)) {
if (i == 0) {
{
SCM answer;
SCM * pos;
- register scm_bits_t i;
+ register long i;
SCM_VALIDATE_INUM_MIN_COPY (2,k,0,i);
answer = SCM_EOL;