diff --git a/NEWS b/NEWS index 8be7fc6ea..893e5df6e 100644 --- a/NEWS +++ b/NEWS @@ -100,6 +100,10 @@ internally, combined with a copy-on-write strategy. The concept of read-only strings will disappear in next release of Guile. +** Deprecated: scm_sloppy_memq, scm_sloppy_memv, scm_sloppy_member + +Instead, use scm_memq, scm_memv, scm_member. + * Changes to the gh_ interface * Changes to the scm_ interface diff --git a/RELEASE b/RELEASE index 5cf2ae6c9..0cc101543 100644 --- a/RELEASE +++ b/RELEASE @@ -60,6 +60,7 @@ In release 1.6: - remove scm_tc7_ssymbol - remove scm_tc7_msymbol - remove scm_tcs_symbols +- remove scm_sloppy_memq, scm_sloppy_memv, scm_sloppy_member Modules sort.c and random.c should be factored out into separate modules (but still be distributed with guile-core) when we get a new diff --git a/libguile/ChangeLog b/libguile/ChangeLog index d967a5457..fc6ec2915 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,10 @@ +2000-10-13 Dirk Herrmann + + * list.[ch] (scm_sloppy_memq, scm_sloppy_memv, scm_sloppy_member): + Deprecated. + + (scm_memq, scm_memv, scm_member): Inline the sloppy code. + 2000-10-11 Dirk Herrmann * alloca.c: Fixed include file path. Thanks to Bruce Korb for diff --git a/libguile/list.c b/libguile/list.c index 933b04adb..d4305ee1f 100644 --- a/libguile/list.c +++ b/libguile/list.c @@ -504,6 +504,8 @@ SCM_DEFINE (scm_list_copy, "list-copy", 1, 0, 0, /* membership tests (memq, memv, etc.) */ +#if SCM_DEBUG_DEPRECATED == 0 + SCM_DEFINE (scm_sloppy_memq, "sloppy-memq", 2, 0, 0, (SCM x, SCM lst), "This procedure behaves like @code{memq}, but does no type or error checking.\n" @@ -554,7 +556,7 @@ SCM_DEFINE (scm_sloppy_member, "sloppy-member", 2, 0, 0, } #undef FUNC_NAME - +#endif /* DEPRECATED */ SCM_DEFINE (scm_memq, "memq", 2, 0, 0, (SCM x, SCM lst), @@ -565,10 +567,13 @@ SCM_DEFINE (scm_memq, "memq", 2, 0, 0, "returned.") #define FUNC_NAME s_scm_memq { - SCM answer; - SCM_VALIDATE_LIST (2,lst); - answer = scm_sloppy_memq (x, lst); - return (SCM_NULLP (answer)) ? SCM_BOOL_F : answer; + SCM_VALIDATE_LIST (2, lst); + for (; !SCM_NULLP (lst); lst = SCM_CDR (lst)) + { + if (SCM_EQ_P (SCM_CAR (lst), x)) + return lst; + } + return SCM_BOOL_F; } #undef FUNC_NAME @@ -583,10 +588,13 @@ SCM_DEFINE (scm_memv, "memv", 2, 0, 0, "returned.") #define FUNC_NAME s_scm_memv { - SCM answer; - SCM_VALIDATE_LIST (2,lst); - answer = scm_sloppy_memv (x, lst); - return (SCM_NULLP (answer)) ? SCM_BOOL_F : answer; + SCM_VALIDATE_LIST (2, lst); + for (; !SCM_NULLP (lst); lst = SCM_CDR (lst)) + { + if (! SCM_FALSEP (scm_eqv_p (SCM_CAR (lst), x))) + return lst; + } + return SCM_BOOL_F; } #undef FUNC_NAME @@ -600,10 +608,13 @@ SCM_DEFINE (scm_member, "member", 2, 0, 0, "returned.") #define FUNC_NAME s_scm_member { - SCM answer; - SCM_VALIDATE_LIST (2,lst); - answer = scm_sloppy_member (x, lst); - return (SCM_NULLP (answer)) ? SCM_BOOL_F : answer; + SCM_VALIDATE_LIST (2, lst); + for (; !SCM_NULLP (lst); lst = SCM_CDR (lst)) + { + if (! SCM_FALSEP (scm_equal_p (SCM_CAR (lst), x))) + return lst; + } + return SCM_BOOL_F; } #undef FUNC_NAME diff --git a/libguile/list.h b/libguile/list.h index e484e434a..f24d54331 100644 --- a/libguile/list.h +++ b/libguile/list.h @@ -83,9 +83,6 @@ extern SCM scm_list_set_x (SCM lst, SCM k, SCM val); extern SCM scm_list_cdr_set_x (SCM lst, SCM k, SCM val); extern SCM scm_last_pair (SCM sx); extern SCM scm_list_tail (SCM lst, SCM k); -extern SCM scm_sloppy_memq (SCM x, SCM lst); -extern SCM scm_sloppy_memv (SCM x, SCM lst); -extern SCM scm_sloppy_member (SCM x, SCM lst); extern SCM scm_memq (SCM x, SCM lst); extern SCM scm_memv (SCM x, SCM lst); extern SCM scm_member (SCM x, SCM lst); @@ -106,6 +103,9 @@ extern void scm_init_list (void); #if (SCM_DEBUG_DEPRECATED == 0) #define scm_list_star scm_cons_star +extern SCM scm_sloppy_memq (SCM x, SCM lst); +extern SCM scm_sloppy_memv (SCM x, SCM lst); +extern SCM scm_sloppy_member (SCM x, SCM lst); #endif /* SCM_DEBUG_DEPRECATED == 0 */ diff --git a/test-suite/ChangeLog b/test-suite/ChangeLog index 18b9582b8..6e58b99e5 100644 --- a/test-suite/ChangeLog +++ b/test-suite/ChangeLog @@ -1,3 +1,7 @@ +2000-10-13 Dirk Herrmann + + * tests/list.test: Removed references to sloppy-mem(q|v|ber) + 2000-09-26 Dirk Herrmann * tests/strings.test: Added a test to help remember that string=? diff --git a/test-suite/tests/list.test b/test-suite/tests/list.test index 99e9b3fec..734c50629 100644 --- a/test-suite/tests/list.test +++ b/test-suite/tests/list.test @@ -665,15 +665,6 @@ ;;; list-copy -;;; sloppy-memq - - -;;; sloppy-memv - - -;;; sloppy-member - - ;;; memq