Question

J'étudie la théorie des langages de programmation et je ne peux pas trouver une raison solide pourquoi les langues ne sont pas paresseux mutation. Quelqu'un sait la raison?

Était-ce utile?

La solution

Laziness signifie qu'une fonction ne soit pas effectivement évalué jusqu'à (ou si) la valeur de retour est utilisée. Cela signifie que les appels de fonction ne sont pas nécessairement évalués dans l'ordre dans lequel ils apparaissent dans le code. Il a également des moyens qu'il ne peut être vide fonctions parce qu'ils ne seraient jamais évaluées (comme pas possible d'utiliser une valeur de retour qui n'existe pas).

Cependant, pour les fonctions qui effectuent des effets secondaires (comme la mutation, mais aussi l'impression juste à l'écran), il ne importe dans quel ordre ils sont exécutés. Il importe encore plus qu'ils exécutés du tout. Cela signifie que des langues paresseux besoin d'un moyen d'imiter les effets secondaires dans les types spéciaux qui assurent que leur exécution et exécutés dans l'ordre.

Étant donné que les programmes sans effet tout à fait secondaires sont inutiles (vous devez être en mesure d'imprimer à l'écran du tout), les langues paresseux font réellement des effets secondaires de soutien. Ils les encapsulent juste avec l'monade IO ou types d'unicité. À titre d'exemple haskell ne mutables tableaux, mais ils peuvent être utilisé dans la monade IO.

Autres conseils

Mutation signifie que vous ne pouvez pas être sûr de l'état du programme à tout moment et vous devrez vous soucier des effets secondaires de toute action. Je l'ai fait pensé à ce sujet et je ne peux pas penser à une façon d'avoir un langage tout à fait paresseux que la mutation des supports. (Je ne suis pas informaticien mais.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top