Ракетка в конечном счете основана на R5RS, а не на R6RS и не является строгим надмножеством. Я не думаю, что это можно назвать «Схемой», потому что она не имеет обратной совместимости ни с одним стандартом Схемы.
Большинство реализаций предлагают расширения, но в остальном обратно совместимы, конечно, компилятор, который поставляется с Racket, также может работать в режиме R5RS или R6RS. Допустимая схема R5 / 6RS, работающая в режиме ракетки, может быть либо отклонена, либо вызвать ошибки во время выполнения, либо вести себя иначе, чем должна. С учетом сказанного, основные моменты, когда он не имеет обратной совместимости:
- Ракетка не имеет
set-cdr!
и set-car!
, а скорее set-mcar!
, которая работает только с парами, специально созданными как изменяемые.
- То, что Racket называет
letrec
, называется в R6RS letrec*
и не существует в R5RS, а то, что в R5RS и R6RS называется letrec
, не существует в Racket.
- В Racket много вещей самооценочных, что приведет к ошибке в R5RS, , что наиболее важно, пустой список .
- Ракетка чувствительна к регистру, хотя R6RS также чувствительна к регистру
- Ракетка рассматривает
( ... )
и [ ... ]
как эквивалент, R5RS - нет, а R6RS -
Вероятно, есть и другие, но на большинстве других частей ракетка является надмножеством Схемы.