Scheme 48
Developer(s) | Richard Kelsey, Jonathan Rees |
---|---|
Stable release |
1.9.2
/ April 12, 2014 |
Operating system | Cross-platform |
Standard(s) | R5RS[1] |
Type | Programming language |
License | BSD License |
Website | s48.org |
Scheme 48 is a free software Scheme implementation using a bytecode interpreter.[2] It has a foreign function interface for calling functions from C[3] and comes with a regex library,[4] and a POSIX interface.[5] It is supported by SLIB, the portable Scheme library and is the basis for Scsh, the Scheme shell.[2] It has been used in academic research [6]
It is called "Scheme 48" because the first version was written in 48 hours in August 1986.[7] The authors now say it is intended to be understood in 48 hours.
Implementation
Scheme 48 uses a Virtual Machine to interpret the bytecode, which is written in a restricted dialect of Scheme called PreScheme, which can be translated to C and compiled to a native binary. PreScheme, or Pre-Scheme, is a statically-typed dialect of Scheme with the efficiency and low-level machine access of C while retaining many of the desirable features of Scheme.
Pre-scheme was quite interesting. Kelsey published a paper on it, as well, I believe. It was Scheme in the sense that you could load it into a Scheme system and run the code. But it was restrictive -- it required you to write in a fashion that allowed complete Hindley-Milner static type inference, and all higher-order procedures were beta-substituted away at compile time, meaning you could *straightforwardly* translate a prescheme program into "natural" C code with C-level effiency. That is, you could view prescheme as a really pleasant alternative to C for low-level code. And you could debug your prescheme programs in the interactive Scheme development environment of your choice, before flipping a switch and translating to C code, because prescheme was just a restricted Scheme. The Scheme 48 byte-code interpreter was written in prescheme. Prescheme sort of died -- beyond the academic paper he wrote, Kelsey never quite had the time to document it and turn it into a standalone tool that other people could use (Ian Horswill's group at Northwestern is an exception to that claim -- they have used prescheme
— Olin Shivers[8]
References
- ↑ R5RS claim at project website
- 1 2 s48.org project website
- ↑ Mixing Scheme 48 and C, Chapter 8 in manual for version 1.8
- ↑ 5.28 Regular Expressions, in manual for version 1.8
- ↑ Access to POSIX, Chapter 9 in manual for version 1.8
- ↑ Final shift for call/cc:: direct implementation of shift and reset
- ↑ JAR's Unofficial Scheme 48 Page at developer's web site
- ↑ Shivers, Olin. "History of T". paulgraham.com.
External links