summaryrefslogtreecommitdiff
path: root/libguile/srfi-1.c
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2014-06-04 20:42:21 -0400
committerMark H Weaver <mhw@netris.org>2014-06-04 20:42:21 -0400
commitfc8a90043bb8dc876cf638d9959348883c748fe3 (patch)
treeae260c73ec2a2b63ec5ae80cbea65648da1c44e0 /libguile/srfi-1.c
parent4afca1a0662323ed8760c75d84c3aadc64b72908 (diff)
downloadguile-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.c22
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));