diff -du srfi-42/srfi-42.scm srfi-42-new/srfi-42.scm
--- srfi-42/srfi-42.scm	2014-12-17 14:03:55.479578000 -0500
+++ srfi-42-new/srfi-42.scm	2014-12-17 14:02:52.671578012 -0500
@@ -33,7 +33,7 @@
 
 (module srfi-42
 
-	( do-ec list-ec append-ec string-ec
+	( do-ec list-ec (append-ec append*) string-ec
 	  string-append-ec vector-ec vector-of-length-ec
 	  sum-ec product-ec min-ec max-ec any?-ec
 	  every?-ec first-ec last-ec fold-ec fold3-ec
@@ -892,7 +892,18 @@
 (define-syntax append-ec
   (syntax-rules ()
     ((append-ec etc1 etc ...)
-     (apply append (list-ec etc1 etc ...)) )))
+     (append* (list-ec etc1 etc ...)) )))
+
+;; Copied from srfi-1, changed to accept only one argument:
+(define (append* lists)
+  (if (pair? lists)
+      (let recur ((list1 (car lists)) (lists (cdr lists)))
+        (if (pair? lists)
+            (let ((tail (recur (car lists) (cdr lists))))
+              (fold-right cons tail list1)) ; Append LIST1 & TAIL.
+            list1))
+      '()))
+
 
 (define-syntax string-ec
   (syntax-rules ()

Diff finished.  Wed Dec 17 14:04:39 2014
