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);