Sé que se implementan de manera extremadamente insegura en C / C ++. ¿No se pueden implementar de una manera más segura? ¿Son las desventajas de las macros realmente lo suficientemente malas como para superar la potencia masiva que
Las macros se utilizan para hacer que una secuencia de instrucciones de computación esté disponible para el programador como una sola declaración de programa, haciendo que la tarea de programación sea menos tediosa y menos propensa a errores. [
Sé que se implementan de manera extremadamente insegura en C / C ++. ¿No se pueden implementar de una manera más segura? ¿Son las desventajas de las macros realmente lo suficientemente malas como para superar la potencia masiva que
El preprocesador C está conectado a C, pero tiene una sintaxis completamente diferente del lenguaje principal: espacios en blanco sintácticamente significativos (el final de la línea termina una declaración, espacio después de que la macro determina el inicio de la lista de reemplazo) bloques...
De diferentes comparaciones entre plantillas C ++ y genéricos C # / Java como este: /programming/31693/what-are-the-differences-between-generics-in-c-and-java-and-templates-in-c/31929#31929 Percibí que las plantillas de C ++ se implementan mediante algún tipo de preprocesamiento (reemplazo de...
Common Lisp le permite escribir macros que realizan cualquier transformación de origen que desee. Scheme le ofrece un sistema higiénico de coincidencia de patrones que también le permite realizar transformaciones. ¿Qué tan útiles son las macros en la práctica? Paul Graham dijo en Beating the...
Estoy aprendiendo Scheme del SICP y tengo la impresión de que gran parte de lo que hace a Scheme y, aún más, LISP especial es el sistema macro. Pero, dado que las macros se expanden en tiempo de compilación, ¿por qué la gente no crea sistemas de macros equivalentes para C / Python / Java / lo que...
Estoy leyendo 'The Standard C Library' de PJ Plauger, que es realmente interesante. El libro explica no solo cómo USAR la biblioteca sino también cómo se implementa. He terminado de leer la ctype.hsección y en el encabezado las funciones se declaran como macros Y funciones. Por ejemplo int...
Tal como está actualmente, esta pregunta no es adecuada para nuestro formato de preguntas y respuestas. Esperamos que las respuestas sean respaldadas por hechos, referencias o experiencia, pero esta pregunta probablemente solicitará debate, argumentos, encuestas o discusión
Estoy tratando de aprender algo de LISP y he leído mucho sobre la importancia de las macros de LISP, por lo que me gustaría adquirir experiencia laboral con ellas. ¿Puede sugerir un área de aplicación práctica que me permita usar macros para resolver un problema del mundo real y comprender la...
Al mirar los decoradores de Python, alguien hizo la declaración de que son tan poderosos como las macros de Lisp (particularmente Clojure). Al observar los ejemplos dados en PEP 318, me parece que son solo una forma elegante de usar funciones simples de orden superior en Lisp: def attrs(**kwds):...
Digamos que quiero tener varios tipos de mensajes de salida en mi código. Uno de ellos es DEBUG, que solo se imprime, cuando el código se compila en modo de depuración. Por lo general, tendría que escribir algo como #ifdef DEBUG std::cout << "Debug message" << std::endl; #endif que...
He estado leyendo sobre las bibliotecas que la gente ha escrito para lenguajes como Java y C # que utilizan el tejido de código de bytes para hacer cosas como interceptar llamadas a funciones, insertar código de registro, etc. También he estado leyendo sobre macros Lisp / Clojure en un Intente...
He oído que las macros Clojure son más fáciles de escribir pero no tan confiables como las macros higiénicas de Racket. Mi pregunta tiene 2 partes: ¿Cómo gensymdifiere de las macros higiénicas? ¿Qué proporcionan las macros de Racket que no ofrecen Clojure? (ya sea seguridad, composibilidad o...
El primer abuso que viene a mi mente en C es: #define if while Pero al mismo tiempo es extremadamente útil y potente cuando se usa correctamente. Algo similar sucede con las macros Common Lisp. ¿Por qué no todos los lenguajes de programación admiten macros como esta y cuáles son las...
Soy nuevo en Clojure, soy nuevo en Macros y no tengo experiencia previa en Lisp. Pasé a crear mi propia forma de caja de interruptor y terminé con esto: (defmacro switch-case [v cases default] (if (cases v) (cases v) default )) e intenté hacer una función y terminé con esto: (defn...