deprecate `collect'
authorAndy Wingo <wingo@pobox.com>
Fri, 11 Jun 2010 11:24:14 +0000 (13:24 +0200)
committerAndy Wingo <wingo@pobox.com>
Fri, 11 Jun 2010 14:58:31 +0000 (16:58 +0200)
* module/ice-9/boot-9.scm:
* module/ice-9/deprecated.scm (collect): Deprecate, and fix to ensure
  sequential collection.

module/ice-9/boot-9.scm
module/ice-9/deprecated.scm

index 287ad3a..c26a7e6 100644 (file)
@@ -2837,19 +2837,6 @@ module '(ice-9 q) '(make-q q-length))}."
 
 \f
 
-;;; {collect}
-;;;
-;;; Similar to `begin' but returns a list of the results of all constituent
-;;; forms instead of the result of the last form.
-;;; (The definition relies on the current left-to-right
-;;;  order of evaluation of operands in applications.)
-;;;
-
-(defmacro collect forms
-  (cons 'list forms))
-
-\f
-
 ;;; {While}
 ;;;
 ;;; with `continue' and `break'.
index 138f20a..7aeda34 100644 (file)
@@ -49,7 +49,8 @@
             get-option
             for-next-option
             display-usage-report
-            transform-usage-lambda)
+            transform-usage-lambda
+            collect)
 
   #:replace (module-ref-submodule module-define-submodule!))
 
@@ -548,3 +549,21 @@ better yet, use the repl from `(system repl repl)'.")
                        (lambda (%opt %arg %new-argv)
                          (case %opt
                            ,@ transmogrified-cases))))))))
+
+\f
+
+;;; {collect}
+;;;
+;;; Similar to `begin' but returns a list of the results of all constituent
+;;; forms instead of the result of the last form.
+;;;
+
+(define-syntax collect
+  (lambda (x)
+    (issue-deprecation-warning
+     "`collect' is deprecated. Define it yourself.")
+    (syntax-case x ()
+      ((_) #''())
+      ((_ x x* ...)
+       #''(let ((val x))
+            (cons val (collect x* ...)))))))