Различия между схемой #lang и ракеткой #lang - PullRequest
21 голосов
/ 22 августа 2011

Я предполагаю, что #lang racket - это диалект схемы с гораздо большим количеством нестандартных структур и общих функций и, возможно, будет более педагогическим. Каковы льготы ракетки #lang против схемы #lang?

Лучше (или даже возможно) использовать схему #lang в ракетке, чтобы следовать всему содержанию «Структура и интерпретация компьютерных программ» или даже «Как разрабатывать программы». HtDP является специфическим для #lang ракетки?

Какой код написан на схеме #lang, если библиотеки не включены, может использоваться в схеме курицы или в любом основном интерпретаторе?

Заранее спасибо.

1 Ответ

31 голосов
/ 22 августа 2011
  1. Да, #lang racket - диалект по умолчанию для ракетки, с множеством расширений.

  2. Два места, где он не является расширением: if долженесть ветвь else, и пары являются неизменяемыми (без set-car! и set-cdr!).

  3. #lang scheme использовалось некоторое время до изменения имени, а теперь #lang racketиспользуется последовательно.Но мы сохранили для совместимости #lang scheme (а также различные библиотеки scheme/---, которые хранятся и могут иногда отличаться от аналогов racket/---).Нет смысла использовать #lang scheme в новом коде.

  4. Чтобы следовать SICP, не используйте ничего из этого - доступен язык SICP (можно использовать)с #lang sicp), изначально написанным Нилом Ван Дайком, но теперь поддерживаемым в сообществе Racket.

  5. Чтобы следовать HtDP, не используйте ни один из них, используйте языки учеников.Существуют также новые варианты на основе #lang, такие как #lang htdp/bsl, но они еще не в полной форме.(И HtDP не #lang racket специфичен.)

  6. Нет, Ракетка очень отличается от куриной схемы.Возможно, вы сможете запустить некоторый код в обоих, но это, вероятно, будут лишь маленькие игрушечные примеры.

...