Le parentesi quadre e le parentesi graffe in Clojure sono ancora espressioni S?

11

Sto cercando di imparare Lisp e guardare tutti i Lisps là fuori e le loro differenze.

Vedo che in alcune implementazioni di Scheme, puoi usare le parentesi quadre in modo intercambiabile con le parentesi tonde per essere leggibili, quindi, dato che sono trattate allo stesso modo, presumo che siano ancora solo espressioni S come tutto il resto.

Tuttavia, in Clojure vedo che le parentesi quadre e le parentesi graffe vengono usate per rappresentare diversi tipi di dati come i vettori e così via. Sono anche queste espressioni S ancora valide, o devono essere considerate atomi? Questo non "spezza" l'intero concetto delle S-espressioni, rendendo Clojure un Lisp "impuro"?

    
posta mydoghasworms 16.04.2013 - 12:50
fonte

2 risposte

9

La notazione letterale per vettori e mappe (cioè parentesi quadre e parentesi graffe) è solo tempo di lettura zucchero e qualsiasi cosa tu possa rappresentare con quella notazione può anche essere rappresentato con S-espressioni. Di conseguenza, non c'è perdita di potenza o di omoiconicità, e in effetti le macro dei lettori (che a mio avviso sono ancora più potenti) sono disponibili in un certo numero di lips.

Per inciso, nota che Clojure ora fornisce un meccanismo per la creazione di valori letterali "taggati" personalizzati, che, come altri letterali, vengono trasformati in espressioni S prima che vengano compilati e interpretati.

    
risposta data 16.04.2013 - 16:40
fonte
3

Le espressioni S sono una rappresentazione testuale per i dati. Numeri, simboli, celle, elenchi, stringhe ... Common Lisp ha anche rappresentazioni testuali per array, vettori, più tipi di numeri, caratteri, ... Common Lisp fornisce anche un lettore estensibile dall'utente, in modo che l'utente possa aggiungere più rappresentazioni testuali per i tipi di dati. A volte questo meccanismo viene anche utilizzato per alterare la sintassi del linguaggio di programmazione Lisp (ad esempio per supportare espressioni infissi o istruzioni di altri linguaggi di programmazione).

Quindi, se un dialetto Lisp offre rappresentazioni testuali per tipi di dati aggiuntivi, ciò si adatta bene all'idea delle espressioni s.

    
risposta data 06.05.2013 - 00:25
fonte

Leggi altre domande sui tag