Scheme 48

Scheme 48 is a programming language, a dialect of the language Scheme, an implementation using an interpreter which emits bytecode.[1] It has a foreign function interface for calling functions from the language C[2] and comes with a library for regular expressions (regex),[3] and an interface for Portable Operating System Interface (POSIX).[4] It is supported by the portable Scheme library SLIB, and is the basis for the Scheme shell Scsh.[1] It has been used in academic research.[5] It is free and open-source software released under a BSD license.

Scheme 48
ParadigmsMulti: functional, procedural, meta
FamilyLisp
Designed byRichard Kelsey,
Jonathan Rees
DevelopersRichard Kelsey,
Jonathan Rees
First appearedMarch 1987 (1987-03)
Stable release
1.9.2 / 12 April 2014 (2014-04-12)
Typing disciplineDynamic, strong, Latent
ScopeLexical
OSCross-platform
LicenseBSD
Websites48.org

It is called "Scheme 48" because the first version was written in 48 hours in August 1986.[6] 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, "Olin Shivers: History of T"[7]
gollark: I missed a XEnowyrm. Again.
gollark: A crown with the cracked eggs of failed subjects.
gollark: XD and the <3 one.
gollark: Can we ND TJ09's fake eggs?
gollark: They could just catch the ND from the experimenter's own scroll!

References

  1. Kelsey, Richard; Rees, Jonathan. "Scheme 48". S48.org. Retrieved 2018-12-05.
  2. Kelsey, Richard; Rees, Jonathan; Sperber, Mike (10 January 2008). "The Incomplete Scheme 48 Reference Manual for release 1.8: Mixing Scheme 48 and C". S48.org. Retrieved 2018-12-05., Chapter 8 in manual for version 1.8.
  3. Kelsey, Richard; Rees, Jonathan; Sperber, Mike (10 January 2008). "The Incomplete Scheme 48 Reference Manual for release 1.8: Regular Expressions". S48.org. Retrieved 2018-12-05., Chapter 5 in manual for version 1.8.
  4. Kelsey, Richard; Rees, Jonathan; Sperber, Mike (10 January 2008). "The Incomplete Scheme 48 Reference Manual for release 1.8: Access to POSIX". S48.org. Retrieved 2018-12-05., Chapter 9 in manual for version 1.8.
  5. Final shift for call/cc: direct implementation of shift and reset
  6. Rees, Jonathan A. "JAR's Scheme 48 Page". Jonathan A. Rees. Mumble.net. Retrieved 2018-12-05.
  7. Shivers, Olin. "Olin Shivers: History of T". PaulGraham.com. Retrieved 2018-12-05.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.