Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Scheme 9 from Empty Space Progress Report

3 views
Skip to first unread message

Nils M Holm

unread,
Aug 11, 2010, 1:28:46 AM8/11/10
to

Scheme 9 from Empty Space has come a long way since its
beginning as a small and comprehensible R4RS subset.

It is now a pretty complete implementation of R4RS plus lots
of add-ons, like low-level Unix procedures (e.g. stat, execv,
read, write, chmod, etc) and a Curses interface. It has also
some basic networking support (accept, connect, listen).

It has macros, full CALL/CC, bignums, decimal-based exact
real numbers (which become inexact when the mantissa overflows,
so this is not as great as it may sound). It is still pretty
cool though, just try (expt 2.0 1000000000).

Further goodies include a command-line based online help
system, CLOS-like object system, a micro Kanren, N-dimensional
arrays, a pattern matcher, regular expression matching, a
pretty-printer, a Scheme->HTML formatter with syntax highlighting,
a simple internet server, and LOTS of other useful stuff. Most
of all this is original stuff, written by me, not modified copies
of pre-existing libraries.

Most of it is written in portable or mostly portable Scheme,
so the S9fES core is still as small, comprehensible, and portable
as it used to be and can be compiled on virtually any 32-bit
system. For instance, it should still compile fine on Plan 9
(native!, not using APE; not tested recently, patches are welcome).

Finally, it includes an in-(slow)-progress version of a vi-style
multi-buffer editor with a Scheme interaction buffer. For all
those of you who cannot get used to Emacs.

And it is as free as can get. Public domain, CC0, you name it.

Getting it is still a nuisance, though: http://t3x.org/s9fes/

--
Nils M Holm | http://t3x.org

Vitaly Magerya

unread,
Aug 12, 2010, 5:57:06 AM8/12/10
to
Nils, although S9 has lots of small and a few bigger libraries, your
main library system basically amounts to "include". Moreover, S9 has a
namespace-mangling facility package.scm, but you don't ever use it (it
doesn't support define-syntax, does it?).

So the question is, why is that? Do you feel there's no need for a
library/module/package system? If so, what do you do with bindings you
don't want being visible outside?

Nils M Holm

unread,
Aug 12, 2010, 6:27:33 AM8/12/10
to

Yes, LOAD-FROM-LIBRARY is a glorified "include". The only thing I plan
for it is some device that stops it from loading the same file multiple
times when loading a graph of dependent packages. Even this has low
priority, though, because it is pretty fast as it is.

What I currently do to hide things from the global namespace is the
usual

(define (local) ...)

(define global
(let ((local local))
(lambda ()
...))

thingy. (1) The advantage of this approach is that is does not depend
on my home-grown package/module/whatever system.

PACKAGE is rather new and therefore not used in the rest of the
package tree so far. I am not even sure if it ever will be used much,
because of (1).

No, PACKAGE does not support macros and I have not thought much about
this until now. My guess would be that it would be hard, if not
impossible, to do in portable R4RS Scheme.

S9fES is a small Scheme system. It is not intended as an alternative
to the more heavy-weight systems with complex module systems and all
kinds of bells and whistles. It focuses on simplicity (without
sacrificing essential features) and portability. For the things it
currently does, "include" is good enough. (IMHO)

0 new messages