Прежде всего, почему бы не использовать #lang racket
вместо r5rs? Ракетка очень построена с учетом образования. У него даже есть различные обучающие языки для использования с учебником How to Design Programs (или его second edition, который все еще работает). Реализация
ракетки по R RS намеренно ограничена-это обычно не предназначено для использования для чего-нибудь практического, так как сама ракетки переросла свои корни Scheme. Он может быть полезен как инструмент обучения, но, как вы видели, он не включает никаких специальных расширений (за пределами небольшого набора внутренних форм).
Если вы действительно заинтересованы в использовании R RS Scheme, существует реализация SRFI 19: Time Data Types and Procedures в комплекте с ракеткой. R RS не имеет модульной системы, поэтому формально не указан способ загрузки внешних библиотек в чистую схему. Вы должны будете использовать расширение Ракетки #%require
загрузить реализацию SRFI:
(#%require srfi/19)
Это даст вам доступ ко всем SRFI 19 функций и значения.
Вы также можете включить только те функции, которые вы хотите от Racket, поскольку языки фактически совместимы. Чтобы включить current-seconds
, вы хотите сделать что-то вроде этого:
(#%require (only racket/base
current-seconds))
Если вы собираетесь сделать это, хотя, кажется, почти бессмысленно использовать r5rs
язык. Просто используйте racket
или racket/base
.
Большое спасибо, особенно за включение синтаксиса образца. Я планирую переключить языки этим летом, но прямо здесь, в середине потока, я должен, вероятно, придерживаться лошади, чьи особенности и сообщения об ошибках, о которых я немного знаю. – DavidHolmes