Author: yamakenz
Date: Fri Jun 15 06:38:24 2007
New Revision: 4604

Modified:
   sigscheme-trunk/lib/srfi-1.scm
   sigscheme-trunk/src/module-srfi1.c

Log:
* src/module-srfi1.c
* lib/srfi-1.scm
  - (scm_initialize_srfi1):
    * Add new alias srfi-1:for-each
    * Disable re-binding of map to r5rs:map since SigScheme's map is not
      conforming to SRFI-1
  - (for-each): New procedure


Modified: sigscheme-trunk/lib/srfi-1.scm
==============================================================================
--- sigscheme-trunk/lib/srfi-1.scm      (original)
+++ sigscheme-trunk/lib/srfi-1.scm      Fri Jun 15 06:38:24 2007
@@ -13,6 +13,7 @@
 ;; 2007-06-15 yamaken   Imported from
 ;;                      http://srfi.schemers.org/srfi-1/srfi-1-reference.scm
 ;;                      and adapted to SigScheme
+;; 2007-06-15 yamaken   Add for-each
 
 
 ;;; This is a library of list- and pair-processing functions. I wrote it after
@@ -1029,6 +1030,12 @@
 ;;; We extend MAP to handle arguments of unequal length.
 (define map map-in-order)      
 
+;; Added by yamaken 2007-06-15
+(define for-each
+  (let ((srfi-1:map map-in-order))  ;; preserve the implementation
+    (lambda args
+      (apply srfi-1:map args)
+      #f)))
 
 ;;; filter, remove, partition
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Modified: sigscheme-trunk/src/module-srfi1.c
==============================================================================
--- sigscheme-trunk/src/module-srfi1.c  (original)
+++ sigscheme-trunk/src/module-srfi1.c  Fri Jun 15 06:38:24 2007
@@ -71,14 +71,21 @@
 {
     scm_require(SCMLIBDIR "/srfi-1.scm");
 
-    scm_define_alias("srfi-1:member", "member");
-    scm_define_alias("srfi-1:assoc",  "assoc");
+    scm_define_alias("srfi-1:map",      "map");
+    scm_define_alias("srfi-1:for-each", "for-each");
+    scm_define_alias("srfi-1:member",   "member");
+    scm_define_alias("srfi-1:assoc",    "assoc");
 
-    /* SigScheme's map is faster than srfi-1.scm, in-order and accepts unequal
-     * length arguments */
-    scm_define_alias("srfi-1:map",   "map");
+#if 0
+    /* Although SigScheme's map is faster than srfi-1.scm and in-order, it is
+     * not conforming to SRFI-1 specification since it rejects unequal length
+     * arguments. If you need to use the efficient C version of map and
+     * for-each, evaluate (define map r5rs:map) and (define for-each
+     * r5rs:for-each) in your code after (use srfi-1). */
     scm_define_alias("map-in-order", "r5rs:map");
     scm_define_alias("map",          "r5rs:map");
+    scm_define_alias("for-each",     "r5rs:for-each");
+#endif
 
     /* overwrite Scheme procedures with efficient C implementations */
     scm_register_funcs(scm_functable_srfi1);

Reply via email to