Frage

Ich bin Programmiersprache Theorie studiert, und ich kann keinen festen Grund herauszufinden, warum faul Sprachen haben keine Mutation. Wer weiß den Grund?

War es hilfreich?

Lösung

bedeutet Laziness, dass eine Funktion eigentlich nicht ausgewertet, bis (oder es sei denn) der Rückgabewert verwendet wird. Dies bedeutet, dass Funktionsaufrufe sind nicht unbedingt in der Reihenfolge ausgewertet, in der sie im Code erscheinen. Es bedeutet auch, dass es nicht leer Funktionen sein kann, weil sie nie (als nicht möglich, einen Rückgabewert zu verwenden, die nicht existiert) ausgewertet werden.

Jedoch für Funktionen, die Nebenwirkungen führen (wie Mutation, sondern auch den Druck nur auf den Bildschirm) ist es nicht egal, in welcher Reihenfolge sie ausgeführt sind. Es kommt noch, dass sie überhaupt ausgeführt sind. Dies bedeutet, dass faul Sprachen, einen Weg zu emulieren Nebenwirkungen in speziellen Typen müssen dafür sorgen, dass sie in der richtigen Reihenfolge ausgeführt werden und ausgeführt werden.

Da völlig nebenwirkungsfreie Programme nutzlos sind (Sie müssen überhaupt auf den Bildschirm drucken können), faul Sprachen tatsächlich Unterstützung Nebenwirkungen tun. Sie kapseln sie nur mit der IO oder Einzigartigkeit Typen Monade. Als Beispiel Haskell wandelbar Arrays hat, aber sie können nur innerhalb des IO Monade verwendet werden.

Andere Tipps

Mutation bedeutet, dass Sie nicht sicher, ob der Zustand des Programms jederzeit sein kann und wird sich jeder Handlung zu Sorgen über Nebenwirkungen haben. Ich habe darüber eigentlich gedacht, und ich kann nicht von irgendeiner Weise denken, dass Stützen Mutation eine völlig faul Sprache zu haben. (Ich bin kein Informatiker though.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top