[movitz-cvs] CVS update: movitz/losp/muerte/sequences.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Thu Jun 10 12:21:11 UTC 2004


Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv24484

Modified Files:
	sequences.lisp 
Log Message:
Added a trivial delete-if-not, and incomplete make-sequence and concatenate.

Date: Thu Jun 10 05:21:11 2004
Author: ffjeld

Index: movitz/losp/muerte/sequences.lisp
diff -u movitz/losp/muerte/sequences.lisp:1.8 movitz/losp/muerte/sequences.lisp:1.9
--- movitz/losp/muerte/sequences.lisp:1.8	Thu May 20 10:48:04 2004
+++ movitz/losp/muerte/sequences.lisp	Thu Jun 10 05:21:11 2004
@@ -10,7 +10,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Tue Sep 11 14:19:23 2001
 ;;;;                
-;;;; $Id: sequences.lisp,v 1.8 2004/05/20 17:48:04 ffjeld Exp $
+;;;; $Id: sequences.lisp,v 1.9 2004/06/10 12:21:11 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -1268,6 +1268,10 @@
     (vector
      (error "vector delete-if not implemented."))))
 
+(defun delete-if-not (test sequence &rest key-args)
+  (declare (dynamic-extent key-args))
+  (apply 'delete-if (complement test) sequence key-args))
+
 (defun remove-duplicates (sequence &key (test 'eql) (key 'identity) (start 0) end test-not from-end)
   (when test-not
     (setf test (complement test-not)))
@@ -1575,6 +1579,27 @@
 	(if (eq list-1 (cdr head))
 	    (return list-1))))))
 
+(defun make-sequence (result-type size &key (initial-element nil initial-element-p))
+  "=> sequence"
+  (ecase result-type
+    (string
+     (if (not initial-element-p)
+	 (make-string size)
+       (make-string size :initial-element initial-element)))
+    (list
+     (make-list size :initial-element initial-element))))
 
-  
+(defun concatenate (result-type &rest sequences)
+  "=> result-sequence"
+  (declare (dynamic-extent sequences))
+  (cond
+   ((null sequences)
+    (make-sequence result-type 0))
+   ((and (null (rest sequences))
+	 (typep (first sequences) result-type))
+    (copy-seq (first sequences)))
+   ((= 0 (length (first sequences)))
+    (apply #'concatenate result-type (cdr sequences)))
+   (t (error "Can't concatenate ~S yet: ~:S" result-type sequences))))
+     
   





More information about the Movitz-cvs mailing list