Если под «Стандартной схемой (в среде Racket IDE)» вы имеете в виду язык Racket, то есть то, что вы получаете, добавляя к коду префикс #lang racket,
, то четыре основных отличия, на которые следует обратить внимание:
- другая модульная система
- другая система макросов (в зависимости от того, сколько лет вашему коду)
- неизменяемые cons-ячейки (если вы не импортируете изменяемые)
- нет одноруких ifs в Racket (используйте
when
)
Чтобы перенести код из Guile в Racket, выясните, какие файлы находятся «внизу» ваших зависимостей, т. Е. Найдите файлы, не зависящие от других файлов. Откройте такой файл в Racket, добавьте строку #lang racket вверху и попробуйте запустить его.
Скорее всего, вы столкнетесь с ошибками "несвязанного идентификатора". Если повезет, функция присутствует в Racket, но не включена в "ракетный" язык. Найдите имя в документации Racket и, если вы его найдете, используйте (требуется ...), чтобы импортировать имя в вашу программу.
Затем снова запустите программу, чтобы найти следующую ошибку.
Некоторые функции называются по-разному в Guile и Racket, поэтому поищите название в документации Guile и посмотрите, что она делает. Затем откройте документацию по Racket по той же теме и посмотрите, как она называется в Racket.
В некоторых случаях вам, возможно, придется внести более серьезные изменения. Если вы не можете найти какую-либо функциональность в документации Racket, попробуйте спросить у списка рассылки. Возможно, у него просто другое имя или кто-то внедрил его и поместил на PLaneT (таким образом, он не будет отображаться в документации, пока вы не установите пакет).
Пример импорта srfi / 1 в язык R5RS.
#lang r5rs
(#%require srfi/1)
(xcons 1 2)
Отличия кода R4RS от современной схемы?
Следует обратить внимание на то, что в R4RS пустой список '() считается ложным, а не интерпретируется как истина.
См. Этот вопрос, чтобы узнать о других вещах, на которые следует обратить внимание:
Выполнение кода подстановки на основе правила сопоставления шаблонов SICP
См. Также этот список изменений стандарта R5RS: Список изменений с R4RS на R5RS < / а>
person
Community
schedule
17.05.2012
random
процедуры. Согласно этой странице кажется, что вы сможете загрузить все функциональность, которую вы хотите. К сожалению, мне не удалось найти ничего похожего на разницу между языками to. - person robbyphillips   schedule 18.05.2012#%require
в рэкет. - person robbyphillips   schedule 19.05.2012