[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Scheme-reports] [r6rs-discuss] Updated list of latest Scheme releases

On 12/11/2012 06:40 AM, John Cowan wrote:
> I'd be particularly interested in knowing what features, if any, you
> don't intend to support.

Here is a preliminary list.  There may be other parts of R7RS that
may cause difficulties when I try to implement them, or read them
carefully enough to incorporate into the manual.  (My goal is for
the Kawa manual to be self-contained, at least to the extent of
not having to read R7RS side-by-side.)

* Generally when R7RS says an expression returns an unspecified
value Kawa will return #!void, which is equivalent to zero values.

* Full continuations are unlikely to be implemented soon.
They could be implemented by re-writing, but that would
be slow, and thus only supported when explicitly requested.
"Asynchronous Programming" (as in C# 4.5) adds some
motivation for the needed re-writing, though if cheap
co-routines get added to the JVM that may be enough.
Continuation-based webservers also provide some motivation.

* Lack of continuations simplifies/limits dynamic-wind.

* Full tail-call-elimination is only supported when explicitly
requested.  This may change if the JVM gets native support.
Kawa does a good job of statically resolving tail-calls in
some situations, including "state-machine" situations.

* Exception handling may be difficult to implement
correctly.  Especially since we want some sane
interoperability with Java exceptions: One would like
guard's handler to be called if a JVM exception is thrown.
It would be preferable for native exception handlers to
be able to handle raise - though not raise-continuable.
We want native finalizers to executed when a raise happens,
but not when a raise-continuable returns to the caller.

* Currently dividing an exact integer by exact zero returns
an exact infinity.  This may or may not be a good idea - if
so it almost certainly needs some tweaking.

* Display of an infinite list does not terminate.  This is
similar to how display in Kawa does auto-forcing, while
write doesn't.  I may change this, but it depends on UI
experimentation that won't happen soon.  (One idea is
if the output fill more than a screenful, you'll be given
something like a "more" button to request further output
or terminate the computation.)

* equal? of cyclic lists does not terminate.  I will
probably fix this before declaring R7RS support.

* There are likely to be differences in handling of
top-level variables, REPLs, and libraries, but I
haven't dug deeply into this area yet.  Likewise
the environments passed to eval may not be quite
as specified, at least not in the short term.
	--Per Bothner
per@x   http://per.bothner.com/

Scheme-reports mailing list