¿Por qué alguien preferiría las macros Scheme sobre las macros Common Lisp (y realmente quiero saber también, no estoy tratando de ser un troll)?¿Cuáles son las ventajas de las macros de esquema?
Mi experiencia como Lisb newb es que las macros de estilo Common Lisp son mucho más fáciles de aprender que las macros de Scheme. Aún no he visto ninguna ventaja en las macros de Scheme, pero, por supuesto, eso no significa que no existan.
Sé que las macros de Scheme son "higiénicas", pero todavía no estoy convencido de que valga la pena la complejidad adicional. Por otro lado, obviamente, son personas que están convencidas de que esto es necesario, de lo contrario no habría implementaciones de macros Scheme en Common Lisp.
Para resumir, ¿alguien puede defenderme las macros de Scheme?
Las "macros de esquemas" son * no * menos potentes que las macros CL: solo las reglas de sintaxis 'patrón-coincidente-restringido' son menos potentes. Las macros de estilo 'sintaxis-case' arbitrarias son tan potentes como las macros CL, y de hecho son más potentes ya que las macros CL casi ignoran la información léxica. –
@Eli Barzilay: varias implementaciones de CL proporcionan la información léxica utilizando la interfaz a los "entornos" descritos en CLtL2. –
Tenga en cuenta que dije * casi formal *. Estoy bastante seguro de que Oleg ha demostrado que incluso 'sintaxis-rules' es Turing-completa. En mi opinión, las restricciones en 'syntax-rules' y' syntax-case', a pesar de que 'syntax-case' tiene formas más simples, están en su lugar para prevenir errores sutiles en macros complejas (y para hacer papers publicables por supuesto) Pero también creo que esas restricciones hacen que las macros simples sean mucho menos convenientes que con el sistema macro CL. –