summaryrefslogtreecommitdiff
path: root/libguile/array-map.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2009-12-04 13:05:00 +0100
committerAndy Wingo <wingo@pobox.com>2009-12-04 13:05:00 +0100
commit8a1f4f98e121c4ba90eb992203713cf493d45c71 (patch)
tree16d0f6f376528b6d374a58afebe602087d18ba02 /libguile/array-map.c
parent31d845b4bc4bf50f32492c17dc43c9ccea779acb (diff)
downloadguile-8a1f4f98e121c4ba90eb992203713cf493d45c71.tar.gz
remove rpsubrs
* libguile/tags.h: Remove rpsubrs (I chose to interpret the terse name as "recursive predicate subrs"). Just use gsubrs with rest arguments, or do a fold yourself. * libguile/array-map.c (scm_i_array_equal_p): Do the comparison in order, why not. * libguile/chars.c: * libguile/eq.c: * libguile/numbers.c: * libguile/strorder.c: Add 0,2,1 gsubr wrappers for rpsubrs like eq?, <, etc. * libguile/goops.c (scm_class_of) * libguile/procprop.c (scm_i_procedure_arity) * libguile/procs.c (scm_thunk_p) * libguile/vm.c (apply_foreign): Remove rpsubr cases. * test-suite/tests/numbers.test ("=", "<"): Turn a couple xfails into passes.
Diffstat (limited to 'libguile/array-map.c')
-rw-r--r--libguile/array-map.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libguile/array-map.c b/libguile/array-map.c
index 75bc490d5..747747a96 100644
--- a/libguile/array-map.c
+++ b/libguile/array-map.c
@@ -942,8 +942,10 @@ SCM_DEFINE (scm_i_array_equal_p, "array-equal?", 0, 2, 1,
return SCM_BOOL_T;
while (!scm_is_null (rest))
- { if (scm_is_false (scm_array_equal_p (ra0, scm_car (rest))))
+ { if (scm_is_false (scm_array_equal_p (ra0, ra1)))
return SCM_BOOL_F;
+ ra0 = ra1;
+ ra1 = scm_car (rest);
rest = scm_cdr (rest);
}
return scm_array_equal_p (ra0, ra1);