On 10/13/2012 07:40 AM, Michael Sperber wrote: > - Kawa supports a lot of R5RS, but not call/cc and tail calls - arguably > two crucial features. On the above message, Per Bothner said "This is > not a rejection of R6RS in principle [...] but a fact of limited > resources".
Kawa does support full tail-calls in two ways: (1) When using the --full-tailcalls options Kawa uses a trampoline-based calling convention. (2) Always Kawa does a moderately fairly sophisticated compile-time analysis to detect mutual tail-recursion among a group of functions. These are compiled to a simple JVM method, with tailcalls replaced by gotos. There is continuing talk in the Jave community that the JVM should support full tailcalls natively,including by some of the major JVM engineers: http://mail.openjdk.java.net/pipermail/mlvm-dev/2012-August/004944.html That would of course be much preferable, but it's going to take a while. When it comes to full call/cc, they just haven't seemed important enough. There is some interest due to resumable web server operations. In addition asynchronous handlers (like C#'s await functionality) are related and may provide further motivation. When it comes to R6RS, Kawa has implemented a few bits, such as some math procedure. Also R6RS's general import declaration (the general case with renaming etc) has been implemented, but only as a stand-alone form within a file-level implicit library module. -- --Per Bothner [email protected] http://per.bothner.com/ _______________________________________________ Scheme-reports mailing list [email protected] http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports
