~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ AE5EF9382BA9795DFCA81C53EA1BED31__1714331220 ✰
Заголовок документа оригинал.:
✰ Racket (programming language) - Wikipedia ✰
Заголовок документа перевод.:
✰ Ракетка (язык программирования) — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Racket_(programming_language) ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/ae/31/ae5ef9382ba9795dfca81c53ea1bed31.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/ae/31/ae5ef9382ba9795dfca81c53ea1bed31__translat.html ✰
Дата и время сохранения документа:
✰ 16.06.2024 09:14:35 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 28 April 2024, at 22:07 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Ракетка (язык программирования) — Википедия Jump to content

Ракетка (язык программирования)

Из Википедии, бесплатной энциклопедии
Ракетка
DrRacket в Linux
Парадигма Мультипарадигмальность : функциональная , императивная , логическая , мета , модульная , объектно-ориентированная , рефлексивная.
Семья Лисп
Разработано ПЛТ Инк.
Разработчик ПЛТ Инк.
Впервые появился 28 января 1995 г .; 29 лет назад ( 1995-01-28 )
Стабильная версия
8.13 [1]  Отредактируйте это в Викиданных/ 18 мая 2024 г .; 27 дней назад ( 18 мая 2024 г. )
Дисциплина набора текста Динамичный , статичный , сильный
Платформа x86 , PowerPC , SPARC , MIPS , ARM
ТЫ Кросс-платформенный
Лицензия MIT или Apache 2.0 [2]
Расширения имен файлов .rkt [3]
Веб-сайт рэкет-лэнг .org
Основные реализации
Racket , RacketScript Компилятор Racket to JavaScript (ES6), Pycket — реализация Racket с использованием RPython .
Диалекты
Напечатанная ракетка, FrTime, Ленивая ракетка, Каракули
Под влиянием
Эйфель , [4] Схема
Под влиянием
Клююр , [5] Ржавчина , [6] [7] Схема (R6RS) [8]

Racket — это общего назначения многопарадигмальный язык программирования . Язык Racket — это современный диалект Lisp и потомок Scheme . Он разработан как платформа для языков программирования . разработки и реализации [9] В дополнение к основному языку Racket, Racket также используется для обозначения семейства языков программирования. [10] и набор инструментов, поддерживающих разработку на Racket и с его помощью. [11] Racket также используется для написания сценариев , обучения информатике и исследований.

Платформа Racket обеспечивает реализацию языка Racket (включая систему времени выполнения , [12] библиотеки и компилятор DrRacket, написанную на Racket. , поддерживающий несколько режимов компиляции: машинный код, машинно-независимый, интерпретируемый и JIT), а также интегрированную среду разработки (IDE) [13] Racket используется в информационно-пропагандистской программе ProgramByDesign , целью которой является превращение информатики в «незаменимую часть по гуманитарным наукам учебной программы ». [14] [15]

Базовый язык Racket известен своей обширной системой макросов , которая позволяет создавать встроенные и предметно-ориентированные языки , языковые конструкции, такие как классы или модули , а также отдельные диалекты Racket с различной семантикой . [16] [17] [18] [19]

Платформа представляет собой бесплатное программное обеспечение с открытым исходным кодом, распространяемое по лицензиям Apache 2.0 и MIT . [20] Расширения и пакеты, написанные сообществом, можно загружать в каталог пакетов Racket .

История [ править ]

Развитие [ править ]

Маттиас Феллейзен основал PLT Inc. в середине 1990-х годов сначала как исследовательскую группу, а вскоре как проект, посвященный производству педагогических материалов для начинающих программистов (лекции, упражнения/проекты, программное обеспечение). В январе 1995 года группа решила разработать среду педагогического программирования на основе Scheme . Мэтью Флэтт собрал MrEd, оригинальную виртуальную машину для Racket, из libscheme, [21] wxWidgets и несколько других бесплатных систем. [22] В последующие годы команда, в которую входили Флатт, Робби Финдлер , Шрирам Кришнамурти , Кормак Фланаган и многие другие, создала DrScheme, среду программирования для начинающих программистов Scheme и исследовательскую среду для мягкой печати . [13] Основной язык разработки, который поддерживал DrScheme, назывался PLT Scheme.

Параллельно команда начала проводить семинары для учителей старших классов, обучая их разработке программ и функциональному программированию. Полевые испытания с участием этих учителей и их учеников предоставили важные подсказки для направления развития.

В последующие годы PLT добавила языки обучения, алгебраический степпер, [23] прозрачный цикл чтения-оценки-печати , принтер на основе конструктора и многие другие инновации в DrScheme, создающие среду разработки педагогических программ прикладного качества. К 2001 году основная группа (Феллейзен, Финдлер, Флатт, Кришнамурти) также написала и опубликовала свой первый учебник « Как разрабатывать программы» , основанный на их философии преподавания.

Манифест рэкета [9] подробно описаны принципы, лежащие в основе разработки Racket, представлена ​​структура оценки процесса проектирования и подробно описаны возможности для будущих улучшений.

История версий [ править ]

В первом поколении версий схемы PLT появились возможности для программирования в целом с использованием как модулей , так и классов . В версии 42 представлены модули — первоклассная модульная система — в дополнение к классам для крупномасштабной разработки. [24] система классов приобрела новые функции (например, Java в стиле интерфейсы ), но также потеряла некоторые функции (например, множественное наследование ). В этих версиях [16] Язык развивался на протяжении ряда последовательных версий и приобрел значительную популярность в версии 53, что привело к обширной работе и следующей версии 100, которая была бы эквивалентна выпуску «1.0» в текущих популярных системах версий.

Следующая основная версия называлась Версия 200, в которой была представлена ​​новая система модулей по умолчанию, взаимодействующая с макросами. [24] В частности, система модулей обеспечивает разделение вычислений во время выполнения и времени компиляции для поддержки «башни языков». [25] В отличие от модулей, эти модули не являются объектами первого класса .

Версия 300 представила поддержку Unicode , поддержку сторонних библиотек и усовершенствования системы классов. [24] Позже в серии 300 была улучшена производительность среды выполнения языка за счет добавления JIT-компилятора и переключения на сборку мусора по умолчанию .

К следующему основному выпуску проект перешел на более традиционную нумерацию версий на основе последовательности . Версия 4.0 представила #lang сокращение для указания языка, на котором написан модуль. Кроме того, в этой версии представлены неизменяемые пары и списки, поддержка мелкозернистого параллелизма и статически типизированный диалект. [26]

7 июня 2010 года схема PLT была переименована в Racket. [27] Переименование совпало с выходом версии 5.0. Впоследствии серверная часть графического пользовательского интерфейса (GUI) была переписана на Racket с C++ в версии 5.1 с использованием собственных наборов инструментов пользовательского интерфейса на всех платформах. [22] Версия 5.2 включала инструмент фоновой проверки синтаксиса , новую библиотеку построения графиков, библиотеку базы данных и новый расширенный REPL. [28] Версия 5.3 включает новую функцию подмодуля для опционально загружаемых модулей. [29] новые оптимизации инструменты , библиотека JSON и другие функции. [30] В версии 5.3.1 в DrRacket были внесены серьезные улучшения: по умолчанию была включена фоновая проверка синтаксиса и добавлен новый инструмент предварительного просмотра документации. [31]

В версии 6.0 Racket выпустила систему управления пакетами второго поколения. В рамках этой разработки основной репозиторий DrRacket и Racket был реорганизован и разделен на большой набор небольших пакетов, что позволило установить минимальный рэкет и установить только те пакеты, которые необходимы. [32]

Версия 7 Racket была выпущена с новым расширителем макросов, написанным на Racket, в рамках подготовки к переходу на систему времени выполнения Chez Scheme и поддержке нескольких систем времени выполнения. [33] [34] 19 ноября 2019 года вышла Racket 7.5. Лицензия Racket 7.5 была менее строгой. Сейчас они используют либо лицензию Apache 2.0, либо лицензию MIT. [35] [36]

13 февраля 2021 года вышла Racket 8.0. Racket 8.0 знаменует собой первый выпуск, в котором Racket с системой времени выполнения Chez Scheme , известной как Racket CS, является реализацией по умолчанию. Racket CS быстрее, проще в обслуживании и разработке, обратно совместим с существующими программами Racket и имеет лучшую параллельную сборку мусора. [37]

Особенности [ править ]

Основной язык Racket включает макросы , модули , лексические замыкания , хвостовые вызовы , продолжения с разделителями . [38] параметры (переменные переменные), контракты на программное обеспечение , [39] зеленые темы и темы ОС , [40] [41] [42] и более. В язык также входят примитивы, такие как пространства событий и хранители, которые контролируют управление ресурсами и позволяют языку действовать как операционная система для загрузки и управления другими программами. [12] Дальнейшие расширения языка создаются с помощью мощной системы макросов, которая вместе с системой модулей и пользовательскими анализаторами может контролировать все аспекты языка. [43] Большинство языковых конструкций в Racket реализованы в виде макросов базового языка. К ним относятся система классов миксинов , [16] система компонентов (или модулей), столь же выразительная, как непрозрачная атрибуция в системе модулей ML , [17] и сопоставление с образцом .

Кроме того, в языке реализована первая контрактная система для языка программирования более высокого порядка . [44] Контрактная система Racket основана на работе Design by Contract для Eiffel и расширяет ее для работы со значениями более высокого порядка, такими как функции первого класса , объекты, ссылочные ячейки и т. д. Например, можно гарантировать, что объект, который проверяется контрактом, будет выполнять проверки контракта при вызове его методов.

Racket включает в себя как байт-код , так и JIT (JIT)-компиляторы. Компилятор байт-кода создает внутренний формат байт-кода, запускаемый виртуальной машиной Racket , а JIT-компилятор преобразует байт-код в машинный код во время выполнения.

С 2004 года язык также поставляется с PLaneT, менеджером пакетов, который интегрирован в систему модулей, что сторонние библиотеки позволяет прозрачно импортировать и использовать . Кроме того, PLaneT имеет встроенную политику управления версиями , предотвращающую ад зависимостей . [45]

В конце 2014 года большая часть кода Racket была перенесена в новую систему упаковки, отдельную от основной базы кода. Эта новая система упаковки обслуживается клиентской программой raco . Новая система пакетов предоставляет меньше возможностей, чем PLaneT; Сообщение Джея Маккарти в блоге Racket объясняет причину изменения и способы дублирования старой системы. [46]

расширяемость языка и макросы Интегрированная

Особенностями, которые наиболее явно отличают Racket от других языков семейства Lisp, являются встроенные функции расширения языка , которые поддерживают создание новых языков , специфичных для предметной области и языков общего назначения . Функции расширения Racket встроены в систему модулей, чтобы обеспечить контекстно-зависимый и модульный контроль над синтаксисом. [18] Например, #%appсинтаксическую форму можно переопределить, чтобы изменить семантику применения функции . Аналогичным образом, #%module-begin Форма позволяет производить произвольный статический анализ всего модуля. [18] Поскольку любой модуль можно использовать в качестве языка, через #lang нотации, это фактически означает, что практически любой аспект языка можно запрограммировать и контролировать.

Возможности расширения на уровне модуля сочетаются с Scheme -подобной гигиенической системой макросов, которая предоставляет больше возможностей, чем Lisp . система манипулирования s-выражениями [47] [48] Scheme 84 Гигиенические макросы расширения синтаксиса R5RS синтаксиса или правила . Действительно, справедливо будет сказать, что система макросов представляет собой тщательно настроенный интерфейс прикладного программирования (API) для компилятора расширений . Используя этот API-интерфейс компилятора, программисты могут добавлять функции и целые предметно-ориентированные языки таким образом, чтобы они были полностью неотличимы от встроенных языковых конструкций.

Макросистема . в Racket использовалась для создания целых диалектов языковых Сюда входит Typed Racket, который представляет собой постепенно типизированный диалект Racket, который упрощает переход от нетипизированного к типизированному коду. [49] Lazy Racket — диалект с ленивой оценкой , [50] и Hackett, сочетающий в себе Haskell и Racket. [51] Язык педагогического программирования Pyret изначально был реализован в Racket. [52] [53]

Другие диалекты включают FrTime ( функциональное реактивное программирование ), Scribble (язык документации), [54] Слайд-шоу ( язык презентации ), [55] и несколько языков для обучения. [56] [57]

Базовый дистрибутив Racket предоставляет библиотеки, помогающие в разработке языков программирования. [18] Такие языки не ограничиваются синтаксисом, основанным на s-выражениях . В дополнение к обычным расширениям синтаксиса на основе читаемых таблиц директива #lang позволяет вызывать произвольные анализаторы, что можно реализовать с помощью библиотеки инструментов анализатора. [58] См. «Ракетное логическое программирование» пример такого языка в разделе .

Среда программирования [ править ]

Языковая платформа предоставляет самостоятельную среду разработки. [13] на основе продолжения названный DrRacket, веб-сервер , [59] графический интерфейс пользователя , [22] и другие инструменты. Как жизнеспособный инструмент сценариев с такими библиотеками, как распространенные языки сценариев , его можно использовать для написания сценариев оболочки Unix. Он может анализировать аргументы командной строки и запускать внешние инструменты.

DrRacket IDE [ править ]

DrRacket (ранее DrScheme) широко используется на вводных курсах информатики, на которых преподают Scheme или Racket, и славится своей простотой и привлекательностью для начинающих программистов. Изначально IDE была создана для использования с TeachScheme! проект (теперь ProgramByDesign ), информационно-просветительская работа Северо-Восточного университета и ряда дочерних университетов с целью привлечения старшеклассников к курсам информатики на уровне колледжа.

Редактор обеспечивает подсветку синтаксических ошибок и ошибок времени выполнения, сопоставление скобок, отладчик и алгебраический шаговый процессор. Его функции, удобные для студентов, включают поддержку нескольких «языковых уровней» (начальный студент, средний студент и т. д.). Он также имеет встроенную поддержку библиотек и сложные инструменты анализа для опытных программистов. Кроме того, модульно-ориентированное программирование поддерживается браузером модулей, контурным представлением, интегрированными тестирования и покрытия измерениями рефакторинга , а также поддержкой . Он обеспечивает интегрированный контекстно-зависимый доступ к обширной справочной системе с гиперссылками под названием «Служба поддержки».

DrRacket доступен для Windows , macOS , Unix и Linux с системой X Window , и программы ведут себя одинаково на всех этих платформах.

Примеры кода [ править ]

Вот банальное «Привет, Мир!» программа :

#языковая  ракетка 
 "Привет, Мир!" 

Запуск этой программы дает вывод:

"Привет, мир!"

Вот немного менее тривиальная программа:

Результат работы этой программы, как показано в DrRacket
#lang  racket 
 (  требуется   2htdp/image  ) 

 (  let   sierpinski   ([  n   8  ]) 
   (  if   (  ноль?   n  ) 
     (  треугольник   2   '  сплошной   '  красный  ) 
     (  let   ([  t   (  sierpinski   (  -   n   1  ))]) 
       (  заморозить   (  над   т   (  рядом   с т   )  )))))) 

Эта программа, взятая с сайта Racket, рисует треугольник Серпинского , вложенный на глубину 8.

Используя #langдирективе, исходный файл может быть написан на разных диалектах Racket. Вот пример программы факториала в Typed Racket, статически типизированном диалекте Racket:

#lang  typed/racket 

 (  :   факт   (  Целое   ->   Целое  )) 
 (  определить   (  факт   n  ) 
   (  if   (  ноль?   n  )   1   (  *   n   (  факт   (  -   n   1  ))))) 

Реализации [ править ]

В настоящее время Racket имеет две реализации. Оба поддерживают Linux, Windows и MacOS на различных архитектурах и поддерживаются начиная с версии 8.8 (2023 г.). Реализация по умолчанию использует Chez Scheme инкрементный компилятор и среду выполнения . Альтернативная реализация генерирует независимый от платформы байт-код и использует JIT-компиляцию для создания машинного кода по мере его загрузки. [60]

Кроме того, существуют экспериментальные реализации:

  • RacketScript — это экспериментальный компилятор Racket to JavaScript (ES6). Он позволяет программистам использовать экосистему JavaScript и Racket и стремится сделать эту совместимость максимально гладкой. [61]
  • Pycket — это реализация Racket, созданная с использованием инфраструктуры RPython. [62]

Приложения и практическое использование [ править ]

Помимо теории языков программирования , Racket был разработан как язык общего назначения для производственных систем. Таким образом, дистрибутив Racket включает в себя обширную библиотеку, охватывающую системное и сетевое программирование, веб-разработку, [59] унифицированный интерфейс к базовой операционной системе, динамический интерфейс внешних функций , [63] несколько разновидностей регулярных выражений , генераторы лексеров/парсеров, [58] логическое программирование и полная среда графического интерфейса .

Racket имеет несколько функций, полезных для коммерческого языка, в том числе возможность компилировать автономные исполняемые файлы под Windows, macOS и Unix, профилировщик и отладчик , включенные в интегрированную среду разработки (IDE), а также среду модульного тестирования .

Racket использовался для коммерческих проектов и веб-приложений. Ярким примером является веб-сайт Hacker News , работающий на платформе Arc , разработанной в Racket. Naughty Dog использовала его в качестве языка сценариев в нескольких видеоиграх. [64]

Racket используется для обучения студентов алгебре посредством игрового дизайна в программе Bootstrap . [65]

Ссылки [ править ]

  1. ^ «Ракетка 8.13» . 18 мая 2024 г. Проверено 18 мая 2024 г.
  2. ^ Тобин-Хохштадт, Сэм; Джерард, Сейдж; Дуек, Джоэл; Флэт, Мэтью ; Сохранение свободы программного обеспечения ; Честек, Памела (15 ноября 2019 г.). «Завершение процесса повторного лицензирования Racket» . Проверено 27 декабря 2019 г.
  3. ^ «Файлы DrRacket» . Проверено 21 июля 2019 г. Стандартное расширение файла программы Racket — «.rkt». Расширения «.ss», «.scm» и «.sch» также исторически популярны.
  4. ^ Стрикленд, Т.С.; Феллисен, Матиас (2010). «DLS 2010: Контракты для первоклассных классов» (PDF) .
  5. ^ Боннер-сержант Амброуз (2012 г.). Практическая дополнительная система типов для Clojure (Диссертация). Университет Западной Австралии.
  6. ^ «Вопросы Планеты2» .
  7. ^ «Ржавая библиография» . Гитхаб . 23 ноября 2022 г.
  8. ^ Спербер, Майкл; Дибвиг, Р. Кент; Флэтт, Мэтью; Ван Страатен, Антон; и другие. (август 2007 г.). «Пересмотренный 6 Отчет о схеме алгоритмического языка (R6RS)» . Руководящий комитет схемы . Проверено 13 сентября 2011 г.
  9. ^ Перейти обратно: а б Феллейзен, М.; Финдлер, РБ; Флэтт, М.; Кришнамурти, С.; Барзилай, Э.; Маккарти, Дж.; Тобин-Хохштадт, С. (2015). «Манифест рэкета» (PDF) . Материалы Первого саммита по достижениям в языках программирования : 113–128.
  10. ^ «Диалекты рэкета и махинаций» . Проверено 15 августа 2011 г.
  11. ^ «Добро пожаловать в Рэкет» . Проверено 15 мая 2019 г.
  12. ^ Перейти обратно: а б Квартира; Финдлер; Кришнамурти; Феллизен (1999). Языки программирования как операционные системы (или Месть сына Лисп-машины) . Международная конференция по функциональному программированию.
  13. ^ Перейти обратно: а б с Финдлер; Клементс; Фланаган; Квартира; Кришнамурти; Стеклер; Феллизен (2001). «DrScheme: среда программирования для Scheme» (PDF) . Журнал функционального программирования .
  14. ^ Феляйзен; Финдлер; Квартира; Кришнамурти (2004). «Проект TeachScheme!: Вычисления и программирование для каждого ученика» . Журнал компьютерного образования .
  15. ^ «Обзор» . Программа по дизайну . Проверено 17 августа 2011 г.
  16. ^ Перейти обратно: а б с Флэтт, М.; Финдлер, РБ; Феллейзен, М. (2006). «Схема с классами, миксинами и признаками» (PDF) . Азиатский симпозиум по языкам и системам программирования .
  17. ^ Перейти обратно: а б Флэтт, М.; Феллизен, М. (1998). «Юниты: крутые модули для горячих языков» . Проектирование и реализация языков программирования .
  18. ^ Перейти обратно: а б с д Тобин-Хохштадт, С.; Сент-Амур, В.; Калпеппер, Р.; Флэтт, М.; Феллайзен, М. (2011). «Языки как библиотеки» (PDF) . Проектирование и реализация языков программирования .
  19. ^ Феллайзен, Матиас; Финдлер, Роберт Брюс; Флэтт, Мэтью; Кришнамурти, Шрирам; Барзилай, Эли; Маккарти, Джей; Тобин-Хохштадт, Сэм (2018). «Программируемый язык программирования» . Коммуникации АКМ . 61 (3): 62–71. дои : 10.1145/3127323 . S2CID   3887010 .
  20. ^ «Рэкет: Лицензия на программное обеспечение» . Проверено 20 октября 2015 г.
  21. ^ Бенсон, Брент В. младший (26–28 октября 1994 г.). «libscheme: Схема как библиотека C» . Написано в Санта-Фе, Нью-Мексико. Материалы симпозиума USENIX по языкам очень высокого уровня . Беркли, Калифорния: Ассоциация USENIX. стр. 7–19. ISBN  978-1880446652 . Проверено 7 июля 2013 г.
  22. ^ Перейти обратно: а б с «Восстановление графического слоя Racket» . 08.12.2010 . Проверено 11 декабря 2017 г.
  23. ^ Клементс, Дж.; Флэтт, М.; Феллейзен, М. (2001). «Моделирование алгебраического степпера» (PDF) . Европейский симпозиум по языкам программирования .
  24. ^ Перейти обратно: а б с «Примечания к выпуску Racket Core» . Архивировано из оригинала 5 июля 2013 г. Проверено 15 апреля 2012 г.
  25. ^ Флэт, М. (2002). «Составляемые и компилируемые макросы». Международная конференция по функциональному программированию .
  26. ^ «Схема PLT версия 4.0» . 12 июня 2008 г. Архивировано из оригинала 2 февраля 2013 г. Проверено 7 августа 2012 г.
  27. ^ «От схемы PLT к рэкету» . Racket-lang.org . Проверено 17 августа 2011 г.
  28. ^ «Ракетка 5.2» . PLT, Inc. 09.11.2011 . Проверено 16 июня 2012 г.
  29. ^ «Субмодули» . 03.06.2012 . Проверено 7 августа 2012 г.
  30. ^ "Racket 5.3". PLT, Inc. 2012-08-07. Retrieved 2012-08-07.
  31. ^ "Racket 5.3.1". PLT, Inc. 2012-11-07. Retrieved 2012-11-07.
  32. ^ "Racket 6.0". PLT, Inc. 2014-02-26. Retrieved 2016-02-23.
  33. ^ «Статус Racket-on-Chez: январь 2018 г.» . 05.01.2018. Архивировано из оригинала 28 июня 2018 г. Проверено 13 апреля 2018 г.
  34. ^ «Создание рэкета по схеме Chez (Отчет об опыте)» (PDF) . 01.08.2019 . Проверено 25 июля 2019 г.
  35. ^ «Выпуск Ракетки 7.5» . Пакетный хаб . 22 ноября 2019 года . Проверено 28 ноября 2019 г.
  36. ^ «Ракетка v7.5» . Ракетка | Блог . Проверено 28 ноября 2019 г.
  37. ^ «Рэкет v8.0» .
  38. ^ Флэтт, М.; Ю, Г.; Финдлер, РБ; Феллейзен, М. (2007). «Добавление разделенного и составного элемента управления в среду производственного программирования» (PDF) . Международная конференция по функциональному программированию .
  39. ^ «Контракты» .
  40. ^ "Потоки" .
  41. ^ «Фьючерсы» .
  42. ^ «Места» .
  43. ^ Флэтт, Мэтью (2012). «Создание языков в рэкете» . Коммуникации АКМ . Проверено 8 апреля 2012 г.
  44. ^ Финдлер, РБ; Феллизен, М. (2002). «Контракты для функций высшего порядка» (PDF) . Международная конференция по функциональному программированию .
  45. ^ Мэтьюз, Дж. (2006). «Развертывание компонентов с помощью PLaneT: где вы хотите?». Практикум по схемному и функциональному программированию .
  46. ^ «Пакетная система Racket и Планета» .
  47. ^ Флэтт, Мэтью (2002). «Составляемые и компилируемые макросы: когда вы захотите?» (PDF) . Международная конференция по функциональному программированию .
  48. ^ Флатт, Калпеппер, Дарайс, Финдлер, Макросы, которые работают вместе; Привязки времени компиляции, частичное раскрытие и контексты определения
  49. ^ Тобин-Хохштадт, С.; Феллайзен, М. (2008). «Проектирование и реализация типизированной схемы». Принципы языков программирования .
  50. ^ Барзилай, Э.; Клементс, Дж. (2005). «Лень без тяжелой работы: сочетание ленивого и строгого языка для обучения». Функциональное и декларативное программирование в образовании .
  51. ^ «Язык программирования Хакетт» . Блог Алексис Кинг . Проверено 16 июня 2019 г.
  52. ^ Команда Пырета (24 мая 2011 г.). «Код Pyret; или Обоснование языка программирования Pyret» . Пырет . Проверено 16 июня 2019 г.
  53. ^ «Программирование и языки программирования» . Индекс / . 20 сентября 2017 года . Проверено 16 июня 2019 г.
  54. ^ Флэтт, М.; Барзилай, Э.; Финдлер, РБ (2009). «Каракуля: закрытие книги о специальных инструментах документации». Международная конференция по функциональному программированию .
  55. ^ Финдлер, РБ; Флэтт, М. (2004). «Слайд-шоу: Функциональные презентации». Международная конференция по функциональному программированию .
  56. ^ Феллейзен, М.; Финдлер, РБ; Флэтт, М.; Кришнамурти, С. (2009). «Функциональная система ввода-вывода (или развлечение для первокурсников)» (PDF) . Международная конференция по функциональному программированию .
  57. ^ Феллейзен, М.; Финдлер, РБ; Флэтт, М.; Кришнамурти, С. (2004). «Структура и интерпретация учебной программы по информатике» (PDF) . Журнал функционального программирования . 14 (4): 365–378. дои : 10.1017/S0956796804005076 .
  58. ^ Перейти обратно: а б «Инструменты парсера: синтаксический анализ в стиле lex и yacc» . Проверено 16 августа 2011 г.
  59. ^ Перейти обратно: а б Кришнамурти, Хопкинс; Маккарти; Граунке; Петтиджон; Феллайзен (2007). «Внедрение и использование веб-сервера схемы PLT» (PDF) . Журнал высшего и символического программирования . 20 (4): 431–460. дои : 10.1007/s10990-007-9008-y . S2CID   17731194 .
  60. ^ Реализации
  61. ^ РакетСкрипт
  62. ^ Маленький мальчик
  63. ^ Барзилай, Э.; Орловский, Д. (2004). «Внешний интерфейс для схемы PLT» (PDF) . Схема и функциональное программирование .
  64. ^ «Функциональные DSL mzScheme в разработке игр» . Проверено 8 мая 2012 г.
  65. ^ «Бутстрап» . bootstrapworld.org . Проверено 11 августа 2015 г.

Дальнейшее чтение [ править ]

Внешние ссылки [ править ]

1958 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 2020
ЛИСП 1, 1.5, ЛИСП 2 (заброшенный)
 Маклисп
 Интерлисп
 леев
 Лисп-машина Лисп
 Схема Р5РС Р6РС R7RS маленький
 НОЛЬ
 ЗИЛ (язык реализации Zork)
 Франц Лисп
 Общий Лисп стандарт ANSI
 Лисп
 Схема СО
 XLISP
 Т
 На схеме
 Эмакс Лисп
 АвтоЛИСП
 ПикоЛисп
 Гамбит
 EuLisp
 ИСЛИСП
 ОпенЛисп
 Схема PLT  Ракетка
 новыйЛИСП
 GNU Коварство
 Визуальный ЛИСП
 Кложур
 Дуга
 ЛФЭ
 Он
 Хиалисп
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: AE5EF9382BA9795DFCA81C53EA1BED31__1714331220
URL1:https://en.wikipedia.org/wiki/Racket_(programming_language)
Заголовок, (Title) документа по адресу, URL1:
Racket (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)