diff options
author | Rob Browning <rlb@defaultvalue.org> | 2024-07-17 19:44:06 -0500 |
---|---|---|
committer | Rob Browning <rlb@defaultvalue.org> | 2024-07-30 19:28:37 -0500 |
commit | 372a52e6aa22ac255d8607c9e4f4f43864218440 (patch) | |
tree | b295d67459bbb2f6962da91ceed59b687c770f05 /libguile/srfi-1.c | |
parent | 3cb6309f623ad9ab242a2397cac3ede2ee289f9e (diff) | |
download | guile-372a52e6aa22ac255d8607c9e4f4f43864218440.tar.gz |
srfi-1 length+: move from C to Scheme
* libguile/srfi-1.c (scm_srfi1_length_plus): delete.
* libguile/srfi-1.h (scm_srfi1_length_plus): delete.
* module/srfi/srfi-1.scm: add length+.
Diffstat (limited to 'libguile/srfi-1.c')
-rw-r--r-- | libguile/srfi-1.c | 43 |
1 files changed, 0 insertions, 43 deletions
diff --git a/libguile/srfi-1.c b/libguile/srfi-1.c index 7a8f72e15..798f4e7bb 100644 --- a/libguile/srfi-1.c +++ b/libguile/srfi-1.c @@ -371,49 +371,6 @@ SCM_DEFINE (scm_srfi1_delete_duplicates_x, "delete-duplicates!", 1, 1, 0, } #undef FUNC_NAME -SCM_DEFINE (scm_srfi1_length_plus, "length+", 1, 0, 0, - (SCM lst), - "Return the length of @var{lst}, or @code{#f} if @var{lst} is\n" - "circular.") -#define FUNC_NAME s_scm_srfi1_length_plus -{ - size_t i = 0; - SCM tortoise = lst; - SCM hare = lst; - - do - { - if (!scm_is_pair (hare)) - { - if (SCM_NULL_OR_NIL_P (hare)) - return scm_from_size_t (i); - else - scm_wrong_type_arg_msg (FUNC_NAME, 1, lst, - "proper or circular list"); - } - hare = SCM_CDR (hare); - i++; - if (!scm_is_pair (hare)) - { - if (SCM_NULL_OR_NIL_P (hare)) - return scm_from_size_t (i); - else - scm_wrong_type_arg_msg (FUNC_NAME, 1, lst, - "proper or circular list"); - } - hare = SCM_CDR (hare); - i++; - /* For every two steps the hare takes, the tortoise takes one. */ - tortoise = SCM_CDR (tortoise); - } - while (!scm_is_eq (hare, tortoise)); - - /* If the tortoise ever catches the hare, then the list must contain - a cycle. */ - return SCM_BOOL_F; -} -#undef FUNC_NAME - SCM_DEFINE (scm_srfi1_lset_difference_x, "lset-difference!", 2, 0, 1, (SCM equal, SCM lst, SCM rest), "Return @var{lst} with any elements in the lists in @var{rest}\n" |