MIT Scheme tiene la capacidad de hacer esto. (Si realmente lo desea, coméntelo y le daré el código. Tenía que encontrar algunas funciones no documentadas para hacerlo realidad.)
Sin embargo, no está en la definición del lenguaje del esquema, por lo que las implementaciones no tienen que permitirlo. La razón de esto es que para hacer las funciones más rápidas, una buena implementación del Esquema modificará las funciones. Esto significa reescribirlos en un idioma diferente (ya sea un código de máquina o algo de un nivel bastante bajo) y eliminar los bits que no necesite; por ejemplo, la función +
debe comprobar en general si sus argumentos son números, y si es así , qué tipo de números, pero si su función es un bucle que llama al +
, puede verificar una vez al principio y hacer que la función sea mucho más rápida.
Por supuesto, todavía podría mantener las listas sin demasiados problemas, incluso con todas estas cosas. Pero si intentaste modificar las listas, ¿cómo funcionaría?
(Una vez más, se puede hacer que funcione. Sólo sería más trabajo para los ejecutores, y puesto que no se utiliza por lo general en los programas, la mayoría de la gente probablemente no quiero molestar.)
encontró también algunas notas interesantes: http://www.cs.brown.edu/ pipermail/plt-scheme/2006-May/013052.html – csl