Подтвердить что ты не робот

Различия между схемой #lang и рэкетом #lang

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

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

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

Спасибо заранее.

4b9b3361

Ответ 1

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

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

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

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

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

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