Primero, PAIP está escrito para Common Lisp, no Scheme, así que no sé si él diría lo mismo. Las macros CL hacen casi lo mismo que eval
, aunque en tiempo de compilación en lugar de tiempo de ejecución, y hay otras cosas que podría hacer. Si me mostraras un ejemplo del uso de eval
en Common Lisp, podría intentar encontrar otros métodos para hacer lo mismo.
No soy un programador de esquemas. Solo puedo hablar desde la perspectiva de Norvig, como programador de Common Lisp. No creo que estuviera hablando de Scheme, y no sé si conocía o conocía a Scheme particularmente bien.
En segundo lugar, Norvig dice "probablemente estás haciendo lo incorrecto" en lugar de "estás haciendo lo incorrecto". Esto implica que, por lo que él sabe, hay momentos en que eval
es lo correcto para usar. En un lenguaje como C, diría lo mismo sobre goto
, aunque son bastante útiles en algunas circunstancias restringidas, pero la mayoría del uso de goto
es de personas que no conocen nada mejor.
Lo siento, no podría ser más específico sobre lo que quería en la pregunta. Pero lo que es interesante es que siempre pensé que eval siempre era una parte integral de Scheme. De todos modos, espero ver más usos y 'abusos' de eval en CS G111. :) – unj2
Sí, 'eval' * es * una parte integral de Scheme, pero solo es realmente necesario en casos avanzados. La regla de oro es: si no conoce los motivos técnicos que requieren que use 'eval', entonces * no * lo necesita. (¡Y esta es una respuesta seria!) En cualquier caso, sí, tendrás mucha 'evaluación' en CSG111 si vas a tomarla, y con suerte si lo recuerdas, pregúntame al respecto. –