una programar para macro guardar grabar ejemplos crear como macros common-lisp

para - programar macros en excel



¿Es posible expandir una macro en varios elementos? (2)

No, las macros no se pueden expandir a más de un valor. Lo típico que debe hacer cuando necesita una macro para expandirse a varias partes de código es ajustar el valor de retorno en un progn .

En su ejemplo en los comentarios, parece que está utilizando macros no como abstracciones sintácticas, sino como optimizaciones de funciones baratas y alegres, la respuesta habitual es "por favor no lo hagas, está mal y no lo hace". en realidad, haz lo que quieras ".

Quiero una macro my-macro que puede expandirse a 1 2 3 lugar de (1 2 3) , de modo que

(list (my-macro) 4 5) -> (1 2 3 4 5)

es posible?


No.

Ni una macro ni una macro leída pueden hacer eso en Common Lisp.

La única solución si realmente necesita esto es escribir un lector completo usted mismo donde no use la read en absoluto (el problema es que la read se llamará a sí misma recursivamente, y no su versión).

Un lector totalmente compatible es bastante complejo, pero puede ser simple si solo necesita un subconjunto de las características y no necesita usarlo, por ejemplo, para leer el código Common Lisp escrito por otros.