[cl-utilities-cvs] CVS update: cl-utilities/extremum.lisp

Peter Scott pscott at common-lisp.net
Thu May 26 19:20:29 UTC 2005


Update of /project/cl-utilities/cvsroot/cl-utilities
In directory common-lisp.net:/tmp/cvs-serv3996

Modified Files:
	extremum.lisp 
Log Message:
Updated and improved documentation

Date: Thu May 26 21:20:28 2005
Author: pscott

Index: cl-utilities/extremum.lisp
diff -u cl-utilities/extremum.lisp:1.5 cl-utilities/extremum.lisp:1.6
--- cl-utilities/extremum.lisp:1.5	Tue May 17 21:17:34 2005
+++ cl-utilities/extremum.lisp	Thu May 26 21:20:28 2005
@@ -22,6 +22,11 @@
 	(if (funcall ,test a b) a b))
       whole))
 
+;; The normal way of testing the if length of a proper sequence equals
+;; zero is to just use (zerop (length sequence)). And, while some
+;; implementations may optimize this, it's probably a good idea to
+;; just write an optimized version and use it. This method can speed
+;; up list length testing.
 (defun zero-length-p (sequence)
   "Is the length of SEQUENCE equal to zero?"
   (declare (optimize (speed 3) (safety 0) (space 0) (debug 1)))
@@ -51,9 +56,7 @@
 		 &key (key #'identity) (start 0) end)
   "Returns the element of SEQUENCE that would appear first if the
 sequence were ordered according to SORT using PREDICATE and KEY. See
-http://www.cliki.net/EXTREMUM for the full
-specification. Additionally, START and END specify the beginning and
-ending indices of the part of the sequence we should look at."
+http://www.cliki.net/EXTREMUM for the full specification."
   (with-check-length (sequence start end)
     (reduce (comparator predicate key) sequence
 	    :start start :end end)))
@@ -68,15 +71,6 @@
 	    (reduce (comparator ,predicate) ,sequence
 		    :start ,start :end ,end))))
       whole))
-
-;; And, for backup, here's a strictly spec-compliant version.
-#+nil
-(defun extremum (sequence predicate &key (key #'identity))
-  "Returns the element of SEQUENCE that would appear first if the
-sequence were ordered according to SORT using PREDICATE and KEY. See
-http://www.cliki.net/EXTREMUM for the full specification."
-  (with-check-length (sequence 0 nil)
-    (reduce (comparator predicate key) sequence)))
 
 ;; This is an "optimized" version which calls KEY less. REDUCE is
 ;; already so optimized that this will actually be slower unless KEY




More information about the Cl-utilities-cvs mailing list