Питання Доктор Ракетк проблеми з SICP


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

define-values: cannot change constant variable: +

У мене є мова, яка в даний час встановлена ​​на R5RS, і я опинився під враженням, щоб подбати про проблеми сумісності з SICP.


30
2017-08-30 03:58


походження


Цей (define + 5) насправді працює на моїй машині (Ubuntu 12.04) з DrRacket 5.1.3 зараз. Чи змінили вони за умовчанням? - dividebyzero


Відповіді:


Навіть якщо це можливо, такі переосмислення не є тим, що ви повинні робити, не розуміючи, як система реагує на це. Наприклад, якщо ви перевизначите +, будь-який інший код розірватиметься? Відповідь на це в справі Ракетта - "ні", але це тому, що ви дійсно не переосмислюєте +: замість цього ви визначаєте a новий  +, який може використовуватись тільки ваш код.

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


35
2017-08-30 05:34



Я насправді закінчив роботу над встановленням пакета Neil Van Dyke, щоб я міг мати підтримку для мови картинки та для потоків. Спочатку мене просто дратувало те, що я не міг працювати через кілька прикладів у книзі. Дякую! - Josh Infiesto


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

Щоб отримати цю роботу, я повинен це зробити:

1) Запустіть початковий завантаження, додавши це вгору чистого файлу:

#lang planet neil/sicp

а потім натиснувши "Run"

2) Насолоджуйтесь дуже зручною, автоматичною завантаженням DrRacket та встановленням модуля PLaneT Neil, збираючися зачепити каву ;-)

3) А потім, як тільки він встановлений, закрийте DrRacket.

4) Знову відкрийте і виберіть SICP PlaneT 1.15 зі списку Select A Language.
(Я не міг додати декларацію у верхній частині, щоб працювати для мене, окрім того, щоб зробити це для початкового завантаження.)

Удачі!


19
2018-05-18 01:18



Привіт, в моєму офісі сайт http://planet.racket-lang.org заблоковано, тому я не можу завантажити модуль підтримки SICP через DrRacket. Чи можна спочатку завантажити файли, а потім вручну встановити файли на DrRacket? Дякую. - weima
привіт @ Уейма. Ви вже маєте відповідь на це питання? - Jboy Flaga


На панелі "Мова" потрібно відключити "заборонити перевизначення початкових прив'язок". Це виправляє проблему.


11
2017-08-30 04:32