Scheme
Scheme | |
---|---|
Клас мовы | мультыпарадыгменая |
З’явілася ў | 1975 |
Аўтар(ы) | Гай Сціл, Джэральд Сасмэн |
Пашырэнне файлаў | .scm |
Тыпізацыя даных | строгая, дынамічная |
Асноўныя рэалізацыі | Chibi-Scheme, Chicken, Gambit, Guile, Kawa, MIT Scheme, Racket, Tiny Scheme |
Зведала ўплыў | Lisp, ALGOL, MDL |
Паўплывала на | Clojure, Common Lisp, Dylan, EuLisp, Haskell, JavaScript, Lua, R, Ruby |
Сайт | scheme-reports.org (англ.) |
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), у Scheme ёсць толькі адна прастора імён. Гэта значыць, што імёны пераменных і функцый не могуць быць аднолькавымі.
Зноскі
- ↑ Charter for working group 1. Scheme Steering Committee. 2007-08-13.
- ↑ Charter for working group 2. Scheme Steering Committee. 2007-08-13.
- ↑ R6RS Ratification Vote. Scheme Steering Committee. 2007-08-13.
- ↑ Ліст extension of voting period Архівавана 21 ліпеня 2013. у спіску рассылкі Scheme-reports.