Scheme 48

Scheme 48
Developer(s) Richard Kelsey, Jonathan Rees
Stable release
1.9.2 / April 12, 2014 (2014-04-12)
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

  1. R5RS claim at project website
  2. 1 2 s48.org project website
  3. Mixing Scheme 48 and C, Chapter 8 in manual for version 1.8
  4. 5.28 Regular Expressions, in manual for version 1.8
  5. Access to POSIX, Chapter 9 in manual for version 1.8
  6. Final shift for call/cc:: direct implementation of shift and reset
  7. JAR's Unofficial Scheme 48 Page at developer's web site
  8. Shivers, Olin. "History of T". paulgraham.com.


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.