#234 SLIB in SISC

open
nobody
None
5
2014-08-28
2007-09-04
Aubrey Jaffer
No

bash-3.1$ sisc -v
which: no rlwrap in (/home/jaffer/bin:/usr/kerberos/bin:/usr/java/jdk1.5.0_08/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/sbin:/usr/sbin:/usr/local/chipmunk/bin:/usr/java/jdk1.5.0_08/bin)
SISC - The Second Interpreter of Scheme Code - 1.16.6
bash-3.1$ uname -a
Linux aubrey.jaffer 2.6.20-1.2320.fc5smp #1 SMP Tue Jun 12 19:40:16 EDT 2007 i686 i686 i386 GNU/Linux
bash-3.1$ which java
/usr/java/jdk1.5.0_08/bin/java
bash-3.1$ slib --version
slib 3a4
bash-3.1$

The following patch to the sisc script adds
-Dsisc.slib=$SCHEME_LIBRARY_PATH
to the $JAVA argument-list:

cd /usr/local/bin/
diff -c /usr/local/lib/sisc/sisc /usr/local/bin/sisc
*** /usr/local/lib/sisc/sisc 2007-02-27 11:42:03.000000000 -0500
--- /usr/local/bin/sisc 2007-09-03 14:37:13.000000000 -0400
***************
*** 70,75 ****
D=";" ;;
esac

! $JAVA $JAVAOPT -classpath $SISC_HOME/sisc-opt.jar${D}$SISC_HOME/sisc.jar${D}$SISC_HOME/sisc-lib.jar${D}$CLASSPATH -Dsisc.home=$SISC_HOME sisc.REPL -h $SISC_HOME/sisc.shp $PROPERTIES $EXTENSIONS "$@"
fi

--- 70,75 ----
D=";" ;;
esac

! $JAVA $JAVAOPT -classpath $SISC_HOME/sisc-opt.jar${D}$SISC_HOME/sisc.jar${D}$SISC_HOME/sisc-lib.jar${D}$CLASSPATH -Dsisc.slib=$SCHEME_LIBRARY_PATH -Dsisc.home=$SISC_HOME sisc.REPL -h $SISC_HOME/sisc.shp $PROPERTIES $EXTENSIONS "$@"
fi

Diff finished at Mon Sep 3 15:48:30

With SLIB-3a4, this modified sisc chokes because *features* changed to
slib:features between slib-3a3 and slib3a4:

bash-3.1$ export SCHEME_LIBRARY_PATH=/usr/local/lib/slib/
bash-3.1$ sisc
which: no rlwrap in (/home/jaffer/bin:/usr/kerberos/bin:/usr/java/jdk1.5.0_08/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/sbin:/usr/sbin:/usr/local/chipmunk/bin:/usr/java/jdk1.5.0_08/bin)
SISC (1.16.6)
#;> (require-library 'sisc/libs/slib)
Error in load: evaluation error at jar:file:/usr/local/lib/sisc/sisc-lib.jar!/sisc/libs/slib.scm:337:1
---------------------------
To enable more detailed stack tracing, set the dynamic parameter max-stack-trace-depth to a non-zero value, e.g. 16.
---------------------------
Some stack trace entries may have been suppressed. To see all entries set the dynamic parameter suppressed-stack-trace-source-kinds to '().
===========================
Caused by Error in load: evaluation error at file:/usr/local/lib/slib//require.scm:182:1
===========================
Caused by Error: undefined variable 'slib:features'.
file:/usr/local/lib/slib//require.scm:137:3: <indeterminate call>
#;>

When I tried to build from your source distribution (with
sisc/src/sisc/libs/slib.scm fixed) I get:

bash-3.1$ sisc
which: no rlwrap in (/home/jaffer/bin:/usr/kerberos/bin:/usr/java/jdk1.5.0_08/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/sbin:/usr/sbin:/usr/local/chipmunk/bin:/usr/java/jdk1.5.0_08/bin)
SISC (1.16.6)
#;> (require-library 'sisc/libs/slib)
Error in load: evaluation error at jar:file:/usr/local/lib/sisc/sisc-lib.jar!/sisc/libs/slib.scm:18:1
---------------------------
To enable more detailed stack tracing, set the dynamic parameter max-stack-trace-depth to a non-zero value, e.g. 16.
---------------------------
Some stack trace entries may have been suppressed. To see all entries set the dynamic parameter suppressed-stack-trace-source-kinds to '().
===========================
Caused by Error: library sisc/libs/srfi/srfi-59 not found

This is because the sisc-lib.jar built by running "ant" in the
top-level sisc/ directory contains no SRFIs, where the distribution
version does. Where in the documentation does it explain how to build
the srfis into sisc?

So, instead I created sisc.init in slib/:
http://cvs.savannah.gnu.org/viewvc/slib/slib/sisc.init?view=markup

The "slib" script in the development version,
http://swiss.csail.mit.edu/ftpdir/users/jaffer/slib.zip now handles
SISC by invoking it "slib sisc".

I find that DEFMACROs in files which are loaded aren't visible in the
interactive top level. I don't understand why.

I also have added SISC support to JACAL
http://swiss.csail.mit.edu/ftpdir/users/jaffer/jacal.zip invoked by
"jacal sisc". Jacal-sisc runs all the mathematical tests, but chokes
trying to read /* */ comments!

Error: attempt to apply non-procedure '#<character-input-port *prec:p...'.

I tracked down the error to a call at the end of
TOK:READ-THROUGH-COMMENT in slib/prec.scm. The passed procedure STP
is a procedure (says PROCEDURE?); perhaps the problem is some call it
makes.

Discussion

  • Aubrey Jaffer
    Aubrey Jaffer
    2007-09-04

    Logged In: YES
    user_id=117017
    Originator: YES

    Defmacro turned out to be responsible for both problems. "slib.scm" was written as though SISC had no defmacro. Removing that stuff healed it -- SISC now runs Jacal. http://cvs.savannah.gnu.org/viewvc/slib/slib/sisc.init?view=markup
    has the fix.

    Does SISC have a way to implement MACROEXPAND (a la CommonLisp)?