Commit a812ed21 authored by Paul Eggert's avatar Paul Eggert

Speed up cl-list-length

* lisp/emacs-lisp/cl-extra.el (cl-list-length): Use ‘length’
to do the real work; this is simpler and uses a better algorithm.
parent 5d468624
Pipeline #809 passed with stage
in 53 minutes and 54 seconds
......@@ -594,10 +594,10 @@ too large if positive or too small if negative)."
;;;###autoload
(defun cl-list-length (x)
"Return the length of list X. Return nil if list is circular."
(let ((n 0) (fast x) (slow x))
(while (and (cdr fast) (not (and (eq fast slow) (> n 0))))
(setq n (+ n 2) fast (cdr (cdr fast)) slow (cdr slow)))
(if fast (if (cdr fast) nil (1+ n)) n)))
(cl-check-type x list)
(condition-case nil
(length x)
(circular-list)))
;;;###autoload
(defun cl-tailp (sublist list)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment