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 compatiblessyntax-rules
. -
syntax-case
ve y se siente como una versión extendida desyntax-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 unsyntax-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, especialmentedefine-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