Domanda

Sto lavorando attraverso SICP. Attualmente, nel primo capitolo, sto avendo problemi a far Racket per farmi ridefinire "primitivi". Per esempio, ho avuto l'impressione che dovrei essere in grado di fare in modo arbitrario (define + 5) e che sarebbe bene, o ridefinire la procedura sqrt. Invece, ottengo questo:

define-values: cannot change constant variable: +

Ho la lingua attualmente impostata R5RS, che ho avuto l'impressione si sarebbe preso cura dei problemi di compatibilità con SICP.

È stato utile?

Soluzione

Anche se possibile, tali ridefinizioni non sono qualcosa che si dovrebbe fare senza realmente capire come il sistema reagirà a questo. Ad esempio, se si ridefinisce +, volontà qualsiasi altra pausa codice? La risposta a questa nel caso di Racket è "no" - ma questo è perché non si è davvero ottenere per ridefinire +: invece, si definisce una nuovo +, che solo il codice può utilizzare <. / p>

Per quanto riguarda la scelta della lingua - modalità Racchette R5RS è molto severo, e non è qualcosa che ti sentiresti di solito desidera utilizzare. Per la pagina di un molto di più SICP-friendly ambiente, vedere Neil Van Dyke SICP Support , che vi fornirà un linguaggio specificamente realizzati per il libro. (IIRC, ha anche il linguaggio grafico che i libri spettacoli off.)

Altri suggerimenti

Mi sono imbattuto in problemi cercando di lavoro attraverso l'esempio RSA qui (parte della roba SICP):
http://mitpress.mit.edu/sicp/psets/ps3/readme.html

Per ottenere questo lavoro ho dovuto fare questo:

1) Esegui attraverso il download iniziale aggiungendo questo alla parte superiore di un file vuoto:

#lang planet neil/sicp

e premendo su "Esegui"

2) Godetevi molto facile di DrRacket amichevole, il download automatico e installare il modulo pianeta Neil andando a prendere un caffè; -)

3) E poi una volta che è installato, vicino DrRacket.

4) Riaprire, e scegliere SICP pianeta 1,15 dall'elenco Scegli una lingua.
(Non ho potuto ottenere l'aggiunta della dichiarazione in alto per lavoro per me oltre a fare quello per eseguire il download iniziale.)

In bocca al lupo!

Nel pannello di lingua, è necessario disabilitare "ridefinizione Disallow di attacchi iniziali." Questo risolve il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top