Domanda

Di seguito è riportato un esercizio del SICP. Non sono riuscito a capirlo da solo. Qualcuno può aiutarmi a capire?

Digita il seguente codice in interpreator:

(car ''abracadabra)

E stampa 'quote'. Perché?

È stato utile?

Soluzione

Come diceva gimpf, 'abracadabra = (citazione abracadabra). È possibile verificarlo digitando '' abracadabra sul REPL, che stamperà (citazione abracadabra).

Altri suggerimenti

Perché '' abracadabra è davvero (citazione (citazione abracadabra)). In Scheme, la regola è: valuta tutte le parti dell'espressione s e applica la prima parte al resto delle parti.

" auto " e "quotazione" sono simboli nel seguito. #car e #quote sono le funzioni a cui si riferiscono.

Se prendi

(car (quote (quote abracadabra)))

e valuta le parti, ottieni

(#car (quote abracadabra))

Quindi, applica la prima parte (la funzione auto) alla seconda parte (un elenco di due simboli).

quote

E ottieni solo il simbolo " quote " ;.

Ricorda solo, per capire cosa succede nello Schema, valuta le parti e applica le prime al resto. Se valuti il ??preventivo, ottieni le cose dentro. L'unica parte confusa è che alcuni primitivi (numero e stringhe) valutano se stessi.

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