Racket (язык программирования)
Последнее изменение этой страницы: 22:19, 8 июня 2016.
Файл:Racket logo.png | |
250px DrRacket on Ubuntu GNU/Linux | |
Парадигма | Мультипарадигмальный: функциональный, процедурный, модульный, объекто-ориентированный, логический, метапрограммируемый |
---|---|
Спроектировано | PLT Inc. |
Разработчики | PLT Inc. |
Стабильная версия | 6.4[1] / 8 February 2016 года |
Печать дисциплины | Динамическая, строгая, статическая |
Платформа | x86, PowerPC, SPARC, MIPS, ARM |
Лицензия | LGPL |
Расширение файла |
.rkt , .rktl , .rktd , .scrbl , .plt , .ss , .scm |
Портал: |
racket-lang |
Диалект | |
Typed Racket, Lazy Racket, Scribble, FrTime, more | |
Влияние | |
Scheme,[2] Rust,[3][4] Clojure |
Racket (ранее назывался 'PLT Scheme' ) является языком программирования общего назначения, мультипарадигмальным языком программирования в Lisp - Scheme семье. Это язык программирования полного спектра. Он выходит за рамки Lisp и Scheme с диалектами, которые поддерживают объекты, типы и многое другое. Racket позволяет программистам связывать компоненты, написанные на разных диалектах, и это дает возможность программистам создавать новые, специфические для проекта диалекты. Библиотеки Racket поддерживают разработку веб-серверов и баз данных, GUI и диаграмм.
Содержание
Быстрый старт
Для того, чтобы рисовать картинку, мы должны сначала загрузить некоторые функции изображений, которые являются частью библиотеки для создания слайд-презентаций. Скопируйте следующий текст в область определения, которая является верхней текстовой областью, которую вы видите в программе DrRacket:
#lang slideshow
Затем нажмите кнопку Выполнить. Вы увидите, как текстовое поле перемещается в нижнюю область, которая является областью взаимодействия.
Если вы использовали DrRacket раньше, возможно, потребуется переустановить DrRacket с выбором используемого языка, объявленный в источнике с помощью Language|Choose Language... в меню установки перед нажатием Run.
При вводе выражения после > в окне взаимодействий и нажатия Enter, DrRacket вычисляет выражение и печатает его результат. Выражением может быть только текст, например, номер 5 или строка "художественная галерея":
> 5
5
> "художественная галерея"
"художественная галерея"
Выражение также может быть вызовом функции. Для вызова функции необходимо поставить открывающую скобку перед именем функции для аргументов функции, а затем закрывающую скобку:
> (circle 10)
Результатом функции круга является картина, которая печатается как результат выражения таким же образом, как числа или текст. Аргумент окружности определяет размер окружности в пикселях. Как вы можете догадаться, есть функция прямоугольник, которая принимает два аргумента вместо одного:
> (rectangle 10 20)
Давайте попробуем ввести неправильное количество аргументов у круга и посмотрим, что произойдёт:
> (circle 10 20)
circle: arity mismatch;
the expected number of arguments does not match the given
number
expected: 1 plus optional arguments with keywords
#:border-color and #:border-width
given: 2
arguments...:
10
20
Обратите внимание, что DrRacket окрашивает в розовые цвета строки, которые вызвали ошибку (к сожалению, в данной статье розовая подсветка отсутствует).
В дополнение к основным конструкторам изображений, например кругу и прямоугольнику, есть функция Нс-Append, которая комбинирует изображения. Запуск таких составных функций в Racket, выглядит следующим образом:
> (circle 10 20)
> (hc-append (circle 10) (rectangle 10 20))
Дефис в названии "hc-append" является лишь частью идентификатора; это не "hc" минус "append". Имя функции начинается с "h" потому, что она сочетает в себе изображения по горизонтали, а далее следует буква "c", потому, что изображения центрируются по вертикали.
Если вам интересно, какие ещё существуют функции, чтобы складывать снимки вертикально и выравнивать их по левому краю, то переместите текстовую каретку к hc-append и нажмите клавишу F1 в DrRacket. Окно браузера откроется, и вам выдадут ссылку на документацию для hc-append. Откройте эту ссылку и вы увидите много других функций.
Определение фигур
Для того, чтобы использовать определенный круг и прямоугольник много раз, им можно дать имена. Переместитесь обратно в область определения (верхняя область) и добавьте два определения. Полное содержание области определения выглядит следующим образом:
#lang slideshow
(define c (circle 10))
(define r (rectangle 10 20))
Как вы можете видеть, функция Нс-Append принимает необязательный числовой аргумент, и она принимает любое количество аргументов изображений. Когда необязательный аргумент записан, функция определяет по нему расстояние между объектами.
На практике область определения, где ваша программа живет - это файл, который вы сохраняете, в то время как область взаимодействия предназначена для переходных исследований и задач отладки.
Давайте добавим определение функций в программу. Определение функций использует такие же определения как и наши определения фигур, но с открытой скобкой перед именем функции, и с именами для аргументов функций перед соответствующими закрывающими скобками:
define (square n)
; Так обозначаются комментарии
; Ниже находится тело функции
(filled-rectangle n n))
Синтаксис определения аналогичен синтаксису вызова функции:
> (square 10)
Таким же образом, как определения могут быть включены в области взаимодействия, выражения могут быть включены в область определения. При запуске программы, результаты выражений из области определения приводятся в области взаимодействия.
Среда программирования
Языковая платформа обеспечивает IDE, графический пользовательский интерфейс и другие инструменты. Racket также является жизнеспособным инструментом сценариев и может быть использован для сценариев оболочки Unix. Можно парсить аргументы командной строки, запускать внешние инструменты. Так же Racket включать в себя библиотеки, как и другие языки сценариев.
Ребрендинг и обновления
7 июня 2010 г. PLT Scheme был переименован в Racket. Смена названия совпала с выпуском версии 5.0. Впоследствии GUI бэкенд был переписан в Racket из C++ в версии 5.1 с использованием собственных Widget Toolkit на всех платформах.В версии 5.2 включен фоновый инструмент статического анализа кода, новая библиотека рисования, библиотека базы данных, а также новый расширенный REPL. Version 5.3 - включена новая функция - подмодуль для опционально загруженных модулей, новые инструменты программной оптимизации, JSON библиотека и другие возможности. Версия 5.3.1 внесла значительные улучшения в DrRacket: фоновая проверки синтаксиса была включена по умолчанию, и была добавлена новый инструмент документации для предварительного просмотра.
В версии 6.0 Racket выкатил свою систему управления пакетами второго поколения. В рамках этого основной репозиторий DrRacket и Racket был реорганизован и разделен на большой набор небольших пакетов, что позволяет установить "минимальную ракетку" и установить только те пакеты, которые необходимы.
Внешние ссылки
- Официальный сайт
- Блог
- Репозиторий
- pkg management system
- Гайды
- Справка по языку Racket
- Вся официальная документация
Литература
- ↑ Racket blog
- ↑ Sperber, Michael; Dybvig, R. Kent; Flatt, Matthew; Van Straaten, Anton; et al. (August 2007). "Revised6 Report on the Algorithmic Language Scheme (R6RS)". Scheme Steering Committee. Retrieved 2011-09-13.
- ↑ "Planet2 questions".
- ↑ "Rust Bibliography".
ISSN 2542-0356
Следуй за Полисом
Оставайся в курсе последних событий
Лицензия
Если не указано иное, содержание этой страницы доступно по лицензии Creative Commons «Attribution-NonCommercial-NoDerivatives» 4.0, а примеры кода – по лицензии Apache 2.0. Подробнее см. Условия использования.