[movitz-cvs] CVS update: movitz/losp/muerte/sequences.lisp
Frode Vatvedt Fjeld
ffjeld at common-lisp.net
Sat May 21 22:33:41 UTC 2005
Update of /project/movitz/cvsroot/movitz/losp/muerte
In directory common-lisp.net:/tmp/cvs-serv4727
Modified Files:
sequences.lisp
Log Message:
Added a piece of (map 'string ..)
Date: Sun May 22 00:33:40 2005
Author: ffjeld
Index: movitz/losp/muerte/sequences.lisp
diff -u movitz/losp/muerte/sequences.lisp:1.19 movitz/losp/muerte/sequences.lisp:1.20
--- movitz/losp/muerte/sequences.lisp:1.19 Wed Dec 15 14:58:34 2004
+++ movitz/losp/muerte/sequences.lisp Sun May 22 00:33:40 2005
@@ -1,6 +1,6 @@
;;;;------------------------------------------------------------------
;;;;
-;;;; Copyright (C) 2001-2004,
+;;;; Copyright (C) 2001-2005,
;;;; Department of Computer Science, University of Tromso, Norway.
;;;;
;;;; For distribution policy, see the accompanying file COPYING.
@@ -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.19 2004/12/15 13:58:34 ffjeld Exp $
+;;;; $Id: sequences.lisp,v 1.20 2005/05/21 22:33:40 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
@@ -670,7 +670,25 @@
(declare (dynamic-extent more-sequences)
(ignore function first-sequence more-sequences))
(error "MAP not implemented."))))
-
+
+(defun map-for-string (function first-sequence &rest more-sequences)
+ (numargs-case
+ (2 (function first-sequence)
+ (with-funcallable (mapf function)
+ (let ((result (make-string (length first-sequence))))
+ (sequence-dispatch first-sequence
+ (vector
+ (do ((i 0 (1+ i)))
+ ((>= i (length result)) result)
+ (setf (char result i) (mapf (aref first-sequence i)))))
+ (list
+ (do ((i 0 (1+ i)))
+ ((>= i (length result)) result)
+ (setf (char result i) (mapf (pop first-sequence)))))))))
+ (t (function first-sequence &rest more-sequences)
+ (declare (ignore function first-sequence more-sequences))
+ (error "MAP not implemented."))))
+
(defun map (result-type function first-sequence &rest more-sequences)
"=> result"
@@ -680,6 +698,8 @@
(apply 'map-for-nil function first-sequence more-sequences))
((eq 'list result-type)
(apply 'map-for-list function first-sequence more-sequences))
+ ((eq 'string result-type)
+ (apply 'map-for-string function first-sequence more-sequences))
(t (error "MAP not implemented."))))
(defun fill (sequence item &key (start 0) end)
More information about the Movitz-cvs
mailing list