¿Cuáles son algunos buenos recursos para aprender sobre macros en Esquema / LISP?

Las macros de esquema no son como macros comunes de Lisp. Hay varios sistemas de macros que se usan comúnmente en Esquema:

  • syntax-rules es un sistema de macros basado en patrones higiénicos que se ha estandarizado desde R5RS. R5RS ha existido desde 1998, por lo que casi todas las implementaciones de Scheme son compatibles syntax-rules .
  • syntax-case ve y se siente como una versión extendida de syntax-rules . La principal diferencia es que puede romper el sistema de patrones y escribir macros de procedimientos, lo que proporciona una manera de romper la higiene de una manera controlada.
  • El cambio de nombre explícito se ve y se siente más como macros de Common Lisp (pero sin desestructuración automática). En este caso, la higiene no es automática, sino que, en cambio, debe cambiar explícitamente el nombre de todos los identificadores que no deben coincidir con el código de usuario.
  • Racket también tiene su propio sistema de macros avanzado llamado syntax-parse que es un syntax-case extendido, con soporte para clases de sintaxis, que permite escribir macros más concisas y precisas.

Aquí hay una pequeña selección de recursos disponibles para cada uno:

  • Para syntax-rules sintaxis: Reglas de sintaxis del manual de Guile, macros basadas en patrones de la Guía de Racket (tenga en cuenta que parte de este contenido es específico de Racket, especialmente define-syntax-rule )
  • Para syntax-case : escritura de macros higiénicas en esquema con el caso de sintaxis, patrones de mezcla y expresiones: caso de sintaxis de la Guía de raquetas (tenga en cuenta que este último es específico de la raqueta en algunos lugares)
  • Para el cambio de nombre explícito: macros higiénicas mediante cambio de nombre explícito, cambio de nombre explícito del manual del esquema MIT / GNU
  • Para syntax-parse : análisis y especificación de sintaxis

No sé sobre esquema para Common Lisp

OnLisp por PaulGraham (descargar)
Let Over Lambda (Let Over Lambda)

Estos dos libros comenzarán tu viaje hacia el mundo de la macro.

PS (Consejos para el dominio)

Según lo citado por Peter Norvig
“Si puedes entender cómo escribir y cuándo usar una macro de una sola vez, entonces realmente entiendes las macros”

(Entendiendo cómo implementar una sola macro lisp)
(Let Over Lambda)