Pregunta

Estoy estudiando la teoría de lenguaje de programación y no puedo encontrar una razón sólida qué idiomas perezosos no tienen la mutación. Alguien sabe el motivo?

¿Fue útil?

Solución

pereza significa que una función no es evaluada en realidad hasta (o menos) se utiliza su valor de retorno. Esto significa que las llamadas a funciones no están necesariamente evalúan en el orden en que aparecen en el código. También significa que no puede haber funciones vacíos porque nunca serían evaluados (ya que no es posible utilizar un valor de retorno que no existe).

Sin embargo, para las funciones que realizan los efectos secundarios (como la mutación, pero también acaba de imprimir en la pantalla) sí importa el orden en que son ejecutados. Que es aún más importante que están ejecutados en absoluto. Esto significa que los idiomas perezosos necesitan una manera de efectos secundarios Emular en tipos especiales que aseguran que se ejecuten y se ejecutan en el orden correcto.

Dado que los programas libres de efectos secundarios en su totalidad son inútiles (lo que necesita para ser capaz de imprimir a la pantalla en absoluto), idiomas perezosos hacen realmente los efectos secundarios de apoyo. Ellos sólo les encapsulan con la mónada IO o tipos de unicidad. A modo de ejemplo Haskell tiene matrices mutables, sino que puede ser utilizado dentro de la mónada IO.

Otros consejos

La mutación significa que no puede estar seguro del estado del programa en cualquier momento y tendrá que preocuparse acerca de los efectos secundarios de cualquier acción. De hecho, he pensado en ello y no puedo pensar en ninguna manera de tener un lenguaje completamente perezosa que los apoyos mutación. (no soy un científico de la computación sin embargo.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top