No, no existe tal cosa en R6RS. Algunas implementaciones raras pueden ser compatibles con algo así, pero en la abrumadora mayoría (incluido eval
en otros idiomas) esto no se puede hacer.
La razón de esto es simple: rompe la compilación, ya que hace que dos funciones se distingan en función de los nombres locales y, en algunos casos, también puede prohibir las optimizaciones simples. Por ejemplo, si hay algo que puede completar para su ???
, entonces el compilador necesitará dos enlaces, incluso cuando puedan optimizarse. En los raros casos en que es posible, cualquiera que sea el utilizado en el ???
(que en algunos idiomas es simplemente uso de eval
) desencadena una compilación diferente, una que correlaciona las vinculaciones conocidas con sus valores. (Hay un comportamiento extraño con eval
mencionado literalmente en el código JS en algunos navegadores, que efectivamente es el mismo problema).
¿Qué otros lenguajes tienen un 'eval' que funciona de esta manera? – amoe
Me gusta JS? No lo sé. –
@amoe El lenguaje de programación kernel usa dicha evaluación. – artemonster