Вопрос

Я работаю через SICP. В настоящее время в первой главе у меня проблемы с получением ракетки, чтобы позволить мне переопределить «примитивы». Например, я находился под впечатлением, что я должен быть в состоянии произвольно сделать (define + 5) и это было бы хорошо или переопределить sqrt процедура. Вместо этого я получаю это:

define-values: cannot change constant variable: +

У меня есть язык, который в настоящее время устанавливается на R5RS, которое я находился под впечатлением, позаботится о проблемах совместимости с SICP.

Это было полезно?

Решение

Даже если возможно, такие переопределения не то, что вы должны делать, не понимая, как система реагирует на это. Например, если вы переопределите +, Будет ли какой-либо другой код кода? Ответ на то, что в случае ракетки - «нет» - но это потому, что вы на самом деле не добираетесь до переопределения +: вместо этого вы определяете новый +, Какой только ваш код может использовать.

Что касается языкового выбора - ракетки R5RS Mode - очень строгий, и это не то, что вы обычно хотите использовать. Для много Больше сийп-дружественных окружающей среды, увидеть Нил Ван Дайке Страница поддержки SICP Что предоставит вам язык, специально сделанный для книги. (IIRC, у него даже есть графический язык, который показывает книги.)

Другие советы

Я столкнулся с проблемами, пытающимися работать через пример RSA здесь (часть вещей SICP):
http://mitpress.mit.edu/sicp/psets/ps3/ruadme.html.

Чтобы получить эту работу, я должен был сделать это:

1) Запустите через начальную загрузку, добавив это в верхнюю часть пустого файла:

#lang planet neil/sicp

а затем ударить "бегать"

2) Наслаждайтесь очень удобной для пользователя DRRARCET, автоматически загрузки и установите модуль Planet Neil, собираясь схватить кофе ;-)

3) А затем после установки нажмите Drracket.

4) Вновь открывайте и выберите SiCP Planet 1.15 из выбора языкового списка.
(Я не мог добавить объявление в верхней части, чтобы работать для меня, чтобы выполнить это, чтобы выполнить начальную загрузку.)

Удачи!

На языковой панели вам необходимо отключить «запретить переопределение исходных привязки». Это исправляет проблему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top