Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Scheme (programming language)
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== History == {{Main|History of the Scheme programming language}} ===Origins=== Scheme started in the 1970s as an attempt to understand [[Carl Hewitt]]'s [[Actor model]], for which purpose Steele and Sussman wrote a "tiny Lisp interpreter" using [[Maclisp]] and then "added mechanisms for creating actors and sending messages".<ref name="revisited">{{Cite journal |last1=Sussman |first1=Gerald Jay |last2=Steele |first2=Guy L. |date=1 December 1998 |title=The First Report on Scheme Revisited |journal=Higher-Order and Symbolic Computation |volume=11 |issue=4 |pages=399β404 |doi=10.1023/A:1010079421970 |s2cid=7704398}}</ref> Scheme was originally called "Schemer", in the tradition of other [[Lisp (programming language)|Lisp]]-derived languages such as [[Planner (programming language)|Planner]] or ''Conniver''. The current name resulted from the authors' use of the [[Incompatible Timesharing System|ITS operating system]], which limited filenames to two components of at most six characters each. Currently, "Schemer" is commonly used to refer to a Scheme programmer. ===R6RS=== A new language standardization process began at the 2003 Scheme workshop, with the goal of producing an R6RS standard in 2006. This process broke with the earlier R''n''RS approach of unanimity. R6RS features a standard module system, allowing a split between the core language and [[Library (computing)|libraries]]. Several drafts of the R6RS specification were released, the final version being R5.97RS. A successful vote resulted in ratifying the new standard, announced on August 28, 2007.<ref name="r6rs"/> Currently the newest releases of various Scheme implementations<ref name="rs6s_Implementations">{{Cite web |title=R6RS Implementations |url=http://www.r6rs.org/implementations.html |access-date=2017-11-24 |publisher=r6rs.org}}</ref> support the R6RS standard. There is a portable reference implementation of the proposed implicitly phased libraries for R6RS, called psyntax, which loads and bootstraps itself properly on various older Scheme implementations.<ref name="psyntax">{{Cite web |last=Abdulaziz Ghuloum |date=2007-10-27 |title=R6RS Libraries and syntax-case system (psyntax) |url=https://www.cs.indiana.edu/~aghuloum/r6rs-libraries/ |access-date=2009-10-20 |publisher=Ikarus Scheme}}</ref> A feature of R6RS is the record-type descriptor (RTD). When an RTD is created and used, the record type representation can show the memory layout. It also calculated object field bit mask and mutable Scheme object field bit masks, and helped the garbage collector know what to do with the fields without traversing the whole fields list that are saved in the RTD. RTD allows users to expand the basic RTD to create a new record system.<ref>{{Cite journal |last1=Keep |first1=Andrew W. |last2=Dybvig |first2=R. Kent |date=November 2014 |title=A run-time representation of scheme record types |journal=Journal of Functional Programming |volume=24 |issue=6 |pages=675β716 |doi=10.1017/S0956796814000203 |s2cid=40001845|doi-access=free}}</ref> R6RS introduces numerous significant changes to the language.<ref name="r6rs_Language_changes">{{Cite web |date=2007-09-26 |title=Revised^6 Report on the Algorithmic Language Scheme, Appendix E: language changes |url=http://www.r6rs.org/final/html/r6rs/r6rs-Z-H-19.html#node_chap_E |access-date=2009-10-20 |publisher=Scheme Steering Committee}}</ref> The source code is now specified in [[Unicode]], and a large subset of Unicode characters may now appear in Scheme symbols and [[identifier]]s, and there are other minor changes to the lexical rules. Character data is also now specified in Unicode. Many standard procedures have been moved to the new standard libraries, which themselves form a large expansion of the standard, containing procedures and syntactic forms that were formerly not part of the standard. A new module system has been introduced, and systems for exception handling are now standardized. Syntax-rules has been replaced with a more expressive syntactic abstraction facility (syntax-case) which allows the use of all of Scheme at macro expansion time. Compliant implementations are now ''required'' to support Scheme's full [[Numerical tower|numeric tower]], and the semantics of numbers have been expanded, mainly in the direction of support for the [[IEEE 754-1985|IEEE 754]] standard for floating point numerical representation. ===R7RS=== The R6RS standard has caused controversy because some see it as a departure from the minimalist philosophy.<ref name="r6rs_electorate">{{Cite web |year=2007 |title=R6RS Electorate |url=http://www.r6rs.org/ratification/electorate.html |access-date=2012-08-09 |publisher=Scheme Steering Committee}}</ref><ref name="r6rs_feeley">{{Cite web |last=Marc Feeley (compilation) |date=2007-10-26 |title=Implementors' intentions concerning R6RS |url=http://lists.r6rs.org/pipermail/r6rs-discuss/2007-October/003351.html |access-date=2012-08-09 |publisher=Scheme Steering Committee, r6rs-discuss mailing list}}</ref> In August 2009, the Scheme Steering Committee, which oversees the standardization process, announced its intention to recommend splitting Scheme into two languages: a large modern programming language for programmers; and a small version, a subset of the large version retaining the minimalism praised by educators and casual implementors.<ref name="position_paper">{{Cite web |last=Will Clinger, Marc Feeley, Chris Hanson, Jonathan Rees and Olin Shivers |date=2009-08-20 |title=Position Statement ''(draft)'' |url=http://scheme-reports.org/2009/position-statement.html |access-date=2012-08-09 |publisher=Scheme Steering Committee}}</ref> Two working groups were created to work on these two new versions of Scheme. The Scheme Reports Process site has links to the working groups' charters, public discussions and issue tracking system. The ninth draft of R7RS (small language) was made available on April 15, 2013.<ref name="r7rs-draft-9">{{Cite web |date=2013-04-15 |title=R7RS 9th draft available |url=http://trac.sacrideo.us/wg/raw-attachment/wiki/WikiStart/r7rs-draft-9.pdf}}</ref> A vote ratifying this draft closed on May 20, 2013,<ref name="r7rs_clinger">{{Cite web |last=Will Clinger |date=2013-05-10 |title=extension of voting period |url=http://lists.scheme-reports.org/pipermail/scheme-reports/2013-May/003401.html |url-status=dead |archive-url=https://web.archive.org/web/20130721162308/http://lists.scheme-reports.org/pipermail/scheme-reports/2013-May/003401.html |archive-date=2013-07-21 |access-date=2013-07-07 |publisher=Scheme Language Steering Committee, scheme-reports mailing list}}</ref> and the final report has been available since August 6, 2013,<!-- quote= the Scheme Steering Committee decided in August 2009 to divide the standard into two separate but compatible languages β a "small" language, suitable for educators, researchers, and users of embedded languages, focused on R5RS compatibility, and a "large" language focused on the practical needs of mainstream software development, intended to become a replacement for R6RS. The present report --> describing "the 'small' language of that effort: therefore it cannot be considered in isolation as the successor to R6RS".<ref name="r7rs"/> {{Lisp}}
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
Scheme (programming language)
(section)
Add topic