Ответ 1
В DrRacket есть язык совместимости SICP
1. В диспетчере пакетов
В документации есть простое руководство по его установке из DrRacket:
-
Откройте диспетчер пакетов: в DrRacket выберите меню "Файл", затем выберите "Менеджер пакетов...".
-
На вкладке "Do What я Mean" найдите текстовое поле и введите: "sicp"
-
Нажмите кнопку "Установить". Это дает много результатов. Не беспокойтесь об этом, даже когда есть предупреждения.
-
Проверьте его. Убедитесь, что DrRacket имеет "Определить язык из источника" в нижний левый угол. Напишите следующую программу и нажмите RUN:
#lang sicp (inc 42) ; ==> 43
Вот более продвинутый тест, в котором используется язык изображения, который должен быть включен в #%require
:
#lang sicp
(#%require sicp-pict)
(paint-hires (below (beside diagonal-shading
(rotate90 diagonal-shading))
(beside (rotate270 diagonal-shading)
(rotate180 diagonal-shading))))
Нажмите RUN, и вы увидите квадрат в окне взаимодействия, который станет ярче по направлению к центру.
2 Установка командной строки
В качестве альтернативы вы также можете сделать шаг 1-3 из терминала/оболочки, выполнив следующее:
raco pkg install sicp
Отсюда вы выполните шаг 4. в первой инструкции по установке, чтобы проверить его.
3. Старые версии или DrRacket, использующие планету, если raco pkg
не работал
В DrRacket существует также старая версия языка совместимости SICP. Имея нижний левый поле выбора в поле "Определить язык из источника", вы можете просто добавить:
#lang planet neil/sicp
как единственная строка в определениях (верхняя область текста) и нажмите RUN, и она будет установлена. Перезагрузите DrRacket, и вы найдете его доступным в раскрывающемся списке. Удачи.
Вы можете получить много сообщений об ошибках красным цветом. Просто проигнорируйте его и перезапустите DrRacket. Возможно, вы больше не найдете выбор в языковом меню, но, начав каждый файл с помощью #lang planet neil/sicp
, он по-прежнему работает как язык модуля.
Судя по ошибкам, он, по-видимому, относится к модулю языка изображения. Я тестировал этот снайпер, и он все еще работает:
(paint-hires (below (beside diagonal-shading
(rotate90 diagonal-shading))
(beside (rotate270 diagonal-shading)
(rotate180 diagonal-shading))))