Avvicinamento SICP in Clojure invece di Scheme


11

Sono uno studente universitario del terzo anno in un programma di ingegneria del software e ho portato l'idea di leggere SICP a un consulente per ottenere una comprensione più profonda e fondamentale dei principi alla base di tutto questo software che progettiamo.

Suggerì di non imparare Scheme per completare il libro (perché non è comune come i moderni dialetti di Lisp) ma di fare invece gli esercizi in Clojure.

È già un libro difficile, se provo gli esercizi del libro nel più moderno Clojure, come funzionerebbe? Ad esempio, non riesco a trovare soluzioni reali, la sintassi che insegnano per Scheme è diversa, ecc.

Risposte:


14

Nel mio primo anno all'università il primo corso di programmazione che ho seguito è stato utilizzando SICP (che era il 1988). Tuttavia, ho avuto un problema simile come te: per il mio computer (in realtà un Commodore Amiga), a quel tempo non era disponibile alcuna implementazione di Scheme, solo un dialetto Lisp diverso (non ricordo il suo nome).

Tuttavia, data la flessibilità di Lisp, è stato piuttosto semplice "emulare" la sintassi dello Schema semplicemente aggiungendo le macro e le funzioni lisp mancanti in alcuni script. Questo è stato effettivamente sufficiente per implementare tutti gli esercizi dal capitolo 1 al 3 richiesti durante il corso (notare che SICP non richiede effettivamente l'intero stack dello Schema, è sufficiente un piccolo sottoinsieme).

Quindi, dal momento che Clojure è AFAIK un moderno dialetto Lisp, immagino che potresti semplicemente fare qualcosa di simile, che ti dà la scelta completamente libera di scrivere cose in Scheme o Clojure o una combinazione di entrambi.

Naturalmente, sarà anche possibile risolvere gli esercizi direttamente in Clojure, entrambe le lingue sono molto simili. Ancora più importante, SICP non riguarda la sintassi del linguaggio di programmazione , riguarda il corretto uso delle astrazioni nella programmazione (ad esempio, con funzioni, dati e oggetti). Quindi non pensare troppo ai possibili problemi di sintassi, questi non sono al centro di questo libro e molto probabilmente di minore preoccupazione.


6
L'unico problema che prevedo è che il clojure manca di 1. TCO ( recurgestisce solo la ricorsione della coda , non le chiamate generali) e 2. la cui mancanza call-with-current-continuationè necessaria per il capitolo 4.
Daniel Gratzer,

2
@jozefg: Penso che se l'OP riuscirà con successo nei capitoli 1-3, molto probabilmente lo farà nel punto in cui non si lamenterà più delle differenze sintattiche tra Clojure e Scheme ;-)
Doc Brown,

@DocBrown considera la possibilità di modificare i chiarimenti sui capitoli 1-3 nel tuo commento sopra nella risposta (e possibilmente spiegare i problemi con il capitolo 4, se sei d'accordo con un commento che ne discute )
moscerino

@gnat: il commento è sicuramente corretto, ma IMHO un po 'nitido. La parte importante della mia risposta è l'ultimo paragrafo.
Doc Brown,

0

Ho trovato la tua domanda subito dopo aver trovato questo sito che sembra essere nel tuo vicolo (anche se potresti averlo trovato o un'alternativa nei mesi successivi): SICP in Clojure

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.