| Scheme 48 | |
|---|---|
| Paradigms | Multi:functional,procedural,meta |
| Family | Lisp |
| Designed by | Richard Kelsey, Jonathan Rees |
| Developers | Richard Kelsey, Jonathan Rees |
| First appeared | March 1987; 38 years ago (1987-03) |
| Stable release | 1.9.3 / 4 December 2024; 14 months ago (2024-12-04) |
| Typing discipline | Dynamic,strong,Latent |
| Scope | Lexical |
| OS | Cross-platform |
| License | BSD |
| Website | s48 |
Scheme 48 is aprogramming language, adialect of the languageScheme, an implementation using aninterpreter which interpretsbytecode.[1] It has aforeign function interface for callingfunctions from the languageC[2] and comes with alibrary forregular expressions (regex),[3] and an interface for Portable Operating System Interface (POSIX).[4] It is supported by the portable Scheme librarySLIB, and is the basis for the Scheme shellScsh.[1] It has been used in academic research.[5] It isfree and open-source software released under aBSD license.
It is called "Scheme 48" because the first version was written in 48 hours in August 1986.[6] The authors now[when?] say it is intended to be understood in 48 hours.[citation needed]
Scheme 48 uses avirtual machine to interpret thebytecode, 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 [sic]. 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]
Thisfree and open-source software article is astub. You can help Wikipedia byadding missing information. |