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