Scheme — мова праграмавання з сямейства моваў Лісп, створаная Гаем Сцілам і Джэральдам Сасмэнам.
Традыцыйна асноўнай рысай мовы Scheme быў мінімалізм, але стандарт R6RS быў значна большым за папярэднія, а новы стандарт R7RS будзе апісваць два варыянта мовы: «малы» варыянт (уключае толькі найбольш неабходныя ў мове праграмавання рэчы, на аснове якіх можна пабудаваць усе іншыя; ствараецца працоўнай групай 1[1]) і «вялікі» (уключае тое, што неабходна для практычнага выкарыстання мовы; ствараецца працоўнай групай 2[2]).
Фармальным стандартам мовы Scheme з’яўляецца стандарт IEEE 1178. Стандартамі дэ-факта з’яўляюцца дакументы RnRS (англ. Revisedn Report on on the Algorithmic Language Scheme, гэта значыць Палепшаная n раз справаздача пра алгарытмічную мову Scheme), якія ствараюцца спецыяльна абраным камітэтам і прымаюцца ў рэзультаце галасавання. Стандарт R6RS быў прыняты ў 2007 годзе[3]. 20 мая закончыцца галасаванне[4] па «маленькаму» варыянту мовы з R7RS.
Стандарт апісвае толькі неабходны мінімум.
Як і ўсе мовы з сямейства Ліспаў, Scheme выкарыстоўвае прэфіксную натацыю. У Scheme матэматычныя аператары +, -, /, * разглядаюцца як функцыі і пішуцца перад іх аргументамі. Напрыклад, сума x і 1 запісваецца так:
(+ x 1)
Выклік функцыі запісваецца такім жа чынам:
(display "Hello, world")
Для схемы характэрная гомаіканічнасць — код і дадзеныя выглядаюць аднолькава. Выклік функцыі у той жа час з’яўляецца звязаным спісам. Вось так апісваецца спіс з двума элементамі — сімвалічным аб’ектам display і радком "Hello, world":
'(display "Hello, world")
```
Гомаіканічнасць дазваляе ствараць макрасы — код, які пераўтварае іншы код.
У адрозненне ад іншых ліспаў (у першую чаргу ад [Common Lisp](/Common_Lisp "Common Lisp")), у Схеме ёсць толькі адна прастора імён. Гэта значыць, што імёны зменных і функцый не могуць быць аднолькавымі.
Спасылкі
--------
1. [↑](/Scheme#cite_ref-1) [Charter for working group 1](http://scheme-reports.org/2009/working-group-1-charter.html). Scheme Steering Committee. 2007-08-13.
2. [↑](/Scheme#cite_ref-2) [Charter for working group 2](http://scheme-reports.org/2010/working-group-2-charter.html). Scheme Steering Committee. 2007-08-13.
3. [↑](/Scheme#cite_ref-3) [R6RS Ratification Vote](http://www.r6rs.org/ratification/results.html). Scheme Steering Committee. 2007-08-13.
4. [↑](/Scheme#cite_ref-4) Ліст [extension of voting period](http://lists.scheme-reports.org/pipermail/scheme-reports/2013-May/003401.html) [Архівавана](https://web.archive.org/web/20130721162308/http://lists.scheme-reports.org/pipermail/scheme-reports/2013-May/003401.html) 21 ліпеня 2013. у спіску рассылкі Scheme-reports.`
Тэмы гэтай старонкі (3):