Quale problema pratico deriva dalla mancanza di macro igienici in Clojure?

9

Ho sentito dire che i macro Clojure sono più facili da scrivere ma non affidabili quanto i macro igienici di Racket. La mia domanda ha 2 parti:

  1. In che modo gensym differisce dalle macro igieniche?
  2. Quali sono le macro di Racket che non forniscono Clojure? (che si tratti di sicurezza, composibilità o altro)
posta Alex 12.01.2016 - 04:56
fonte

1 risposta

4

Il vantaggio dei macro igienici non è una delle capacità linguistiche: puoi scrivere macro che hanno una buona igiene usando gensym e un'attenta quotazione / non quotazione ai tempi giusti. Tuttavia, le macro igieniche assicurano le tue macro hanno una buona igiene. In tal senso, è un po 'come il controllo dei caratteri.

Potrebbero esserci anche vantaggi per gli utensili rispetto ai macro igienici. La maggior parte dei sistemi macro igienici impongono controlli rigorosi su ciò che fa la macro e su come funziona (ad esempio, non è possibile eseguire codice arbitrario quando viene espansa una macro definita da syntax-case di Scheme). Questo può rendere più facile scrivere programmi che "capiscono" la tua macro e possono fornire un supporto di strumenti aggiuntivo.

D'altra parte, ci sono alcuni casi in cui i macro non igienici possono essere utili. Ad esempio, se in realtà vuoi per acquisire un'associazione per una variabile specifica (ad es. macro anaforiche ) quindi penso che sei sfortunato se hai solo macro igieniche.

    
risposta data 26.05.2016 - 01:43
fonte

Leggi altre domande sui tag