Scheme language standardization process
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 Scheme-reports@x http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports