Author: yamakenz
Date: Thu Jun 14 17:40:59 2007
New Revision: 4597

Modified:
   sigscheme-trunk/TODO
   sigscheme-trunk/configure.in
   sigscheme-trunk/lib/Makefile.am
   sigscheme-trunk/src/Makefile.am
   sigscheme-trunk/src/module-srfi1.c
   sigscheme-trunk/src/sigscheme.c

Log:
* This commit make SRFI-1 available (although not validated by test yet)

* src/module-srfi1.c
  - (scm_initialize_srfi1):
    * Load srfi-1.scm
    * Overwrite some Scheme procedures with efficient C implementations
    * Define aliases srfi-1:member and srfi-1:assoc
    * Replace map and map-in-order with r5rs:map
* src/sigscheme.c
 - (scm_initialize_internal): Define aliases r5rs:map, r5rs:for-each,
   r5rs:member and r5rs:assoc
* configure.in
  - Enable SRFI-1 by default
  - Add feature dependencies for srfi1
  - (scmlibdir): New variable
* src/Makefile.am
  - (DEFS): Add -DPKGDATADIR and -DSCMLIBDIR
* lib/Makefile.am
  - (dist_scmlib_DATA):
    * New variable
    * Add srfi-1.scm


Modified: sigscheme-trunk/TODO
==============================================================================
--- sigscheme-trunk/TODO        (original)
+++ sigscheme-trunk/TODO        Thu Jun 14 17:40:59 2007
@@ -2,6 +2,7 @@
 Requirements and critical bugs:
 
 * Support SRFI-1
+  - Write tests
   - Import http://www.math.grin.edu/~stone/srfi/srfi-1-tests.ss
 
 * grep "FIXME" and fix them

Modified: sigscheme-trunk/configure.in
==============================================================================
--- sigscheme-trunk/configure.in        (original)
+++ sigscheme-trunk/configure.in        Thu Jun 14 17:40:59 2007
@@ -464,7 +464,7 @@
     # SRFIs and SigScheme-specific extensions
     case "$enable_conf" in
       full|r5rs|dev)
-        use_srfi1=no
+        use_srfi1=yes
         use_srfi2=yes
         use_srfi6=yes
         use_srfi8=yes
@@ -518,7 +518,7 @@
         use_eval_c_string=yes
         ;;
       uim)
-        use_srfi1=no
+        use_srfi1=yes
         use_srfi2=yes
         use_srfi6=yes
         use_srfi8=yes
@@ -628,7 +628,7 @@
 AX_FEATURE_ARG_Y(load,           [R5RS 'load'])
 
 # SRFIs
-AX_FEATURE_ARG_N(srfi1,          [SRFI-1 list library (broken)])
+AX_FEATURE_ARG_Y(srfi1,          [SRFI-1 list library])
 AX_FEATURE_ARG_Y(srfi2,          [SRFI-2 'and-let*'])
 AX_FEATURE_ARG_Y(srfi6,          [SRFI-6 basic string ports])
 AX_FEATURE_ARG_Y(srfi8,          [SRFI-8 'receive'])
@@ -695,8 +695,9 @@
 reader: port
 writer: port raw_c_format
 load: port reader
-sscm_extensions: 
+sscm_extensions: load
 eval_c_string: reader srfi6
+srfi1: continuation deep_cadrs load sscm_extensions srfi8 srfi23
 srfi6: port string
 srfi34: continuation srfi23
 srfi38: writer
@@ -977,6 +978,12 @@
 else
   CFLAGS="$CFLAGS -DNDEBUG"
 fi
+
+#
+# System directories
+#
+scmlibdir='$(pkgdatadir)/lib'
+AC_SUBST(scmlibdir)
 
 ###############################
 # Output configuration result #

Modified: sigscheme-trunk/lib/Makefile.am
==============================================================================
--- sigscheme-trunk/lib/Makefile.am     (original)
+++ sigscheme-trunk/lib/Makefile.am     Thu Jun 14 17:40:59 2007
@@ -1 +1,3 @@
 EXTRA_DIST = slib.scm
+
+dist_scmlib_DATA = srfi-1.scm

Modified: sigscheme-trunk/src/Makefile.am
==============================================================================
--- sigscheme-trunk/src/Makefile.am     (original)
+++ sigscheme-trunk/src/Makefile.am     Thu Jun 14 17:40:59 2007
@@ -1,6 +1,8 @@
 include libtool-version.mk
 include $(top_builddir)/libgcroots.mk
 
+DEFS += -DPKGDATADIR="\"$(pkgdatadir)\"" -DSCMLIBDIR="\"$(scmlibdir)\""
+
 if USE_LIBSSCM
 lib_LTLIBRARIES = libsscm.la
 endif

Modified: sigscheme-trunk/src/module-srfi1.c
==============================================================================
--- sigscheme-trunk/src/module-srfi1.c  (original)
+++ sigscheme-trunk/src/module-srfi1.c  Thu Jun 14 17:40:59 2007
@@ -69,6 +69,16 @@
 SCM_EXPORT void
 scm_initialize_srfi1(void)
 {
+    scm_require(SCMLIBDIR "/srfi-1.scm");
+
+    scm_define_alias("srfi-1:member", "member");
+    scm_define_alias("srfi-1:assoc",  "assoc");
+
+    /* SigScheme's map is in-order and faster than srfi-1.scm */
+    scm_define_alias("map-in-order", "r5rs:map");
+    scm_define_alias("map",          "r5rs:map");
+
+    /* overwrite Scheme procedures with efficient C implementations */
     scm_register_funcs(scm_functable_srfi1);
 }
 

Modified: sigscheme-trunk/src/sigscheme.c
==============================================================================
--- sigscheme-trunk/src/sigscheme.c     (original)
+++ sigscheme-trunk/src/sigscheme.c     Thu Jun 14 17:40:59 2007
@@ -317,6 +317,12 @@
     scm_register_funcs(scm_functable_r5rs_deep_cadrs);
 #endif
 
+    /* for distinction from SRFI-1 versions */
+    scm_define_alias("r5rs:map",      "map");
+    scm_define_alias("r5rs:for-each", "for-each");
+    scm_define_alias("r5rs:member",   "member");
+    scm_define_alias("r5rs:assoc",    "assoc");
+
 #if SCM_USE_SSCM_EXTENSIONS
     scm_use("sscm-ext");
 #endif

Reply via email to