diff options
author | Marius Vollmer <mvo@zagadka.de> | 2000-07-25 19:06:22 +0000 |
---|---|---|
committer | Marius Vollmer <mvo@zagadka.de> | 2000-07-25 19:06:22 +0000 |
commit | 623ada63ad5ebebe55e76a0c25a8f996a68a7f85 (patch) | |
tree | 84e9c281ad3215c66ec686bc35d892103faa97a6 /libguile | |
parent | b73bde31c72c213c363b880463ca5ab28bf97291 (diff) | |
download | guile-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')
-rw-r--r-- | libguile/alist.c | 26 |
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 |