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é?
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.