Perché qualcuno dovrebbe preferire macro Scheme su macro Common Lisp (e sinceramente voglio anche saperlo, non sto cercando di essere un troll)?Quali sono i vantaggi delle macro di schema?
La mia esperienza come Lisp newb è che le macro in stile Common Lisp sono molto più facili da imparare rispetto alle macro di Scheme. Non ho ancora visto alcun vantaggio per le macro di Scheme, ma ovviamente ciò non significa che non esistano.
So che i macro Scheme sono "hygenic", ma non sono ancora convinto che ciò valga la complessità aggiuntiva. D'altra parte, ovviamente, sono persone convinte che ciò sia necessario, altrimenti non ci sarebbero implementazioni di macro Scheme in Common Lisp.
Per farla breve, qualcuno può difendere i macro di Scheme per me?
"Le macro di schema" sono * non * meno potenti delle macro di CL - sono solo le 'sintassi-regole 'con corrispondenza di pattern che sono meno potenti. Le macro arbitrarie 'syntax-case' sono potenti come le macro CL, e in effetti più potenti poiché le macro CL quasi ignorano le informazioni lessicali. –
@Eli Barzilay: diverse implementazioni CL forniscono le informazioni lessicali utilizzando l'interfaccia agli 'ambienti' descritti in CLtL2. –
Nota che ho detto * quasi-formale *. Sono abbastanza sicuro che Oleg ha dimostrato che anche 'syntax-rules' è completo di Turing. A mio avviso, le restrizioni su 'syntax-rules' e' syntax-case', anche se 'syntax-case' hanno modi più semplici intorno a loro, sono in atto per prevenire bug sottili in macro complesse (e per rendere pubblici documenti pubblicabili). Ma penso anche che queste restrizioni rendono i macro semplici molto meno convenienti rispetto al sistema macro CL. –