summaryrefslogtreecommitdiff
path: root/libguile
diff options
context:
space:
mode:
Diffstat (limited to 'libguile')
-rw-r--r--libguile/alist.c26
1 files changed, 10 insertions, 16 deletions
diff --git a/libguile/alist.c b/libguile/alist.c
index e4f0b0cc5..da9335f67 100644
--- a/libguile/alist.c
+++ b/libguile/alist.c
@@ -331,18 +331,16 @@ SCM_DEFINE (scm_assq_remove_x, "assq-remove!", 2, 0, 0,
(SCM alist, SCM key),
"@deffnx primitive assv-remove! alist key\n"
"@deffnx primitive assoc-remove! alist key\n"
- "Delete all entries in @var{alist} associated with @var{key}, and return\n"
+ "Delete the first entry in @var{alist} associated with @var{key}, and return\n"
"the resulting alist.")
#define FUNC_NAME s_scm_assq_remove_x
{
SCM handle;
handle = scm_sloppy_assq (key, alist);
- while (SCM_CONSP (handle))
- {
- alist = scm_delq_x (handle, alist);
- handle = scm_sloppy_assq (key, alist);
- }
+ if (SCM_CONSP (handle))
+ alist = scm_delq_x (handle, alist);
+
return alist;
}
#undef FUNC_NAME
@@ -356,11 +354,9 @@ SCM_DEFINE (scm_assv_remove_x, "assv-remove!", 2, 0, 0,
SCM handle;
handle = scm_sloppy_assv (key, alist);
- while (SCM_CONSP (handle))
- {
- alist = scm_delq_x (handle, alist);
- handle = scm_sloppy_assv (key, alist);
- }
+ if (SCM_CONSP (handle))
+ alist = scm_delq_x (handle, alist);
+
return alist;
}
#undef FUNC_NAME
@@ -374,11 +370,9 @@ SCM_DEFINE (scm_assoc_remove_x, "assoc-remove!", 2, 0, 0,
SCM handle;
handle = scm_sloppy_assoc (key, alist);
- while (SCM_CONSP (handle))
- {
- alist = scm_delq_x (handle, alist);
- handle = scm_sloppy_assoc (key, alist);
- }
+ if (SCM_CONSP (handle))
+ alist = scm_delq_x (handle, alist);
+
return alist;
}
#undef FUNC_NAME