racket учебник
Начало работы с ракеткой
Поиск…
замечания
В этом разделе представлен обзор того, что такое ракетка, и почему разработчик может захотеть его использовать.
Следует также упомянуть о любых крупных предметах в рэкете и ссылки на связанные темы. Поскольку документация для racket является новой, вам может потребоваться создать начальные версии этих связанных тем.
Версии
Привет, мир!
В следующем примере объявляется фрагмент кода, который должен быть записан в Racket, а затем печатает строку Hello, world
.
#lang racket
"Hello, world!"
Код ракеты можно запускать непосредственно из командной строки или в среде DrRacket. Typing racket
в командной строке запустит консоль, и набрав racket
, за которым следует имя файла будет оценивать содержимое файла. Например, предположим, что файл hello.rkt
содержит указанный выше код. Ниже приведен пример запуска Racket в командной строке.
$ racket
Welcome to Racket v6.5.
> "Hello, world!"
"Hello, world!"
> (exit)
$ racket hello.rkt
"Hello, world!"
рэкет
Racket - это язык программирования полного спектра. Он выходит за рамки Lisp и Scheme с диалектами, которые поддерживают объекты, типы, лень и многое другое. Racket позволяет программистам связывать компоненты, написанные на разных диалектах, и позволяет программистам создавать новые диалекты, специфичные для проекта. Библиотеки Racket поддерживают приложения от веб-серверов и баз данных до графических интерфейсов и графиков.
Официальную, всеобъемлющую и очень хорошо написанную документацию можно найти по адресу [ http://docs.racket-lang.org/][1] . На этом сайте (Документация переполнения стека) вы можете найти примеры, предоставленные пользователями.
Монтаж
Перейдите на страницу http://racket-lang.org и нажмите кнопку загрузки.
Простая рекурсивная функция определения
В Racket мы часто используем рекурсию. Ниже приведен пример функции, которая суммирует все числа от нуля до параметра n
.
(define (sum n)
(if (zero? n)
0
(+ n (sum (sub1 n)))))
Обратите внимание, что здесь много полезных функций, основанных на использовании, таких как zero?
и sub1
. Каждый из них делает то, что вы можете ожидать: zero?
возвращает логическое значение, которое указывает, было ли заданное число равным нулю, а sub1
вычитает один из его аргумента.
Найти источники ракеты во всех поддиректорах
#lang racket
(for ([path (in-directory)]
#:when (regexp-match? #rx"[.]rkt$" path))
(printf "source file: ~a\n" path))
Строка #lang
указывает язык программирования этого файла. #lang racket
мы используем базовый язык с включенным батареей языка программирования Racket. Другие языки испорчены из разновидностей Racket, таких как Type Racket ( #lang typed/racket
) или язык документации Scribble ( #lang scribble
), на небольшие удобные языки, такие как язык для определения пакетов ( #lang info
).
Функция in-directory
создает последовательность, которая обрабатывает дерево каталогов (начиная с текущего каталога, по умолчанию) и генерирует пути в дереве. Форма for
связывает path
с каждым путем в последовательности и regexp-match?
применяет шаблон к пути.
Чтобы запустить пример, установите Racket, запустите DrRacket, вставьте пример программы в верхнюю область в DrRacket и нажмите кнопку «Выполнить». Кроме того, сохраните программу в файл и запустите racket
из командной строки в файле.
Установка или настройка
Установка очень проста. Если вы привыкли к подобным вещам, просто перейдите на страницу https://download.racket-lang.org . Если вы предпочитаете, есть более подробные пошаговые инструкции по установке для следующих систем: