diff options
author | Andy Wingo <wingo@pobox.com> | 2009-12-04 13:05:00 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2009-12-04 13:05:00 +0100 |
commit | 8a1f4f98e121c4ba90eb992203713cf493d45c71 (patch) | |
tree | 16d0f6f376528b6d374a58afebe602087d18ba02 /libguile/array-map.c | |
parent | 31d845b4bc4bf50f32492c17dc43c9ccea779acb (diff) | |
download | guile-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.c | 4 |
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); |