summaryrefslogtreecommitdiff
path: root/libguile/alist.c
diff options
context:
space:
mode:
authorMarius Vollmer <mvo@zagadka.de>2000-07-25 19:06:22 +0000
committerMarius Vollmer <mvo@zagadka.de>2000-07-25 19:06:22 +0000
commit623ada63ad5ebebe55e76a0c25a8f996a68a7f85 (patch)
tree84e9c281ad3215c66ec686bc35d892103faa97a6 /libguile/alist.c
parentb73bde31c72c213c363b880463ca5ab28bf97291 (diff)
downloadguile-623ada63ad5ebebe55e76a0c25a8f996a68a7f85.tar.gz
* alist.c (scm_assq_remove_x, scm_assv_remove_x,
scm_assoc_remove_x): Remove only the first cell with a matching key, not all.
Diffstat (limited to 'libguile/alist.c')
-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