diff options
author | Mark H Weaver <mhw@netris.org> | 2014-06-04 20:42:21 -0400 |
---|---|---|
committer | Mark H Weaver <mhw@netris.org> | 2014-06-04 20:42:21 -0400 |
commit | fc8a90043bb8dc876cf638d9959348883c748fe3 (patch) | |
tree | ae260c73ec2a2b63ec5ae80cbea65648da1c44e0 /libguile/srfi-1.c | |
parent | 4afca1a0662323ed8760c75d84c3aadc64b72908 (diff) | |
download | guile-fc8a90043bb8dc876cf638d9959348883c748fe3.tar.gz |
Optimize scm_ilength and 'length+'.
* libguile/list.c (scm_ilength): Test for SCM_NULL_OR_NIL_P only after
testing scm_is_pair. Conform to GNU coding standards.
* libguile/srfi-1.c (scm_srfi1_length_plus): Ditto.
Diffstat (limited to 'libguile/srfi-1.c')
-rw-r--r-- | libguile/srfi-1.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/libguile/srfi-1.c b/libguile/srfi-1.c index fcbf80694..c0b7035fc 100644 --- a/libguile/srfi-1.c +++ b/libguile/srfi-1.c @@ -620,20 +620,28 @@ SCM_DEFINE (scm_srfi1_length_plus, "length+", 1, 0, 0, do { - if (SCM_NULL_OR_NIL_P (hare)) - return scm_from_size_t (i); if (!scm_is_pair (hare)) - scm_wrong_type_arg_msg (FUNC_NAME, 1, lst, "proper or circular list"); + { + 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_NULL_OR_NIL_P (hare)) - return scm_from_size_t (i); if (!scm_is_pair (hare)) - scm_wrong_type_arg_msg (FUNC_NAME, 1, lst, "proper or circular list"); + { + 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); + tortoise = SCM_CDR (tortoise); } while (!scm_is_eq (hare, tortoise)); |