lazy/eager Substitution/Evaluation

BastiS
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 224
Registriert: 3. Nov 2005 19:12
Kontaktdaten:

lazy/eager Substitution/Evaluation

Beitrag von BastiS »

So, ich rede jetzt dreist Deutsch ;-)
@Andreas: Wenn wir das richtig im Kopf haben, wolltest du hier im Forum nochmal auf die Unterscheidung zwischen lazy/eager Substitution und lazy/eager Evaluation eingehn.
Also am Besten ein Beispiel dafür, wo sich die einzelnen Formen unterschiedlich verhalten, damit klar wir, dass lazy Evaluation != lazy Substitution (analog für eager)
Ebenso hier, was eigentlich static/dynamic Reduction ist....auf eager Substitution trifft ja sowohl static als auch dynamic Reduction zu, auf lazy substitution nur static Reduction (erster Foliensatz, Folie 41).

Daniel S.
Mausschubser
Mausschubser
Beiträge: 87
Registriert: 25. Sep 2007 12:28
Wohnort: Mörfelden

Re: lazy/eager Substitution/Evaluation

Beitrag von Daniel S. »

Du hast noch Immediate- und Deferred Substitution vergessen.
Ich habe es so verstanden (->keine Garantie auf Korrektheit!):

Eager- und Lazy Substitution
Unterscheiden sich im Zeitpunkt der Auswertung von Ausdrücken. Z.B. bei
{with {x {+ 5 5}} {x}}
wird der Ausdruck {+ 5 5} in einer Programmiersprache mit Eager Substitution erst berechnet, bevor das x durch ihn ersetzt wird. Bei Lazy Substitution würde der ganze Ausdruck an den Stellen von x eingesetzt werden.

Immediate- und Deferred Substitution
Unterscheiden sich im Zeitpunkt der Ersetzung von Variablen durch Ausdrücke. Bei einer Programmiersprache mit Immediate Substitution werden "Variablen"(-Argumente) sofort ersetzt, je nach Substitution Regim (Eager-/Lazy ) mit dem schon berechneten Wert des Ausdrucks oder mit dem gesamten Ausdruck. Bei Deferred Substitution wird mit der Ersetzung gewartet, bis man während der Ausführung auf eine "Variable"(Argument) trifft und erst dann wird sie ersetzt, wieder je nach Substitution Regime mit dem Wert oder dem Ausdruck.

Eager- und Lazy Evaluation
Unterscheiden sich im Zeitpunkt der Auswertung von Ausdrücken. Bei Eager Evaluation werden die Werte von Ausdrücke immer sofort berechnet. Bei Lazy Evaluation wird der ganze Ausdruck solange weitergereicht, bis ein Static Point (?) erreicht wird, der den tatsächlichen Wert eines Ausdrucks benötigt, wodurch es schließlich zur Berechnung kommt.

(Static- und Dynamic Reduction)
Ist glaube ich nur eine andere Bezeichnung für Immediate- und Deferred Substitution!?
Mit freundlichen Grüßen
Daniel

Julius
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 238
Registriert: 5. Okt 2005 15:52

Re: lazy/eager Substitution/Evaluation

Beitrag von Julius »

Daniel S. hat geschrieben: Static Point (?)
Ich glaube hier meintest du Strict Points.

Daniel S.
Mausschubser
Mausschubser
Beiträge: 87
Registriert: 25. Sep 2007 12:28
Wohnort: Mörfelden

Re: lazy/eager Substitution/Evaluation

Beitrag von Daniel S. »

Genau, das wars. Ich wollte eigentlich noch nachschauen, bevor ich auf Absenden drücke, hab es dann aber vergessen.
Mit freundlichen Grüßen
Daniel

BastiS
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 224
Registriert: 3. Nov 2005 19:12
Kontaktdaten:

Re: lazy/eager Substitution/Evaluation

Beitrag von BastiS »

Danke für die bisherigen Erklärungen, aber das klärt meine Frage noch nicht wirklich, wo der Unterschied zwischen Eager Substitution und Eager Evaluation ist (und selbiges für Lazy), du verweist bei beidem nur auf den Zeitpunkt der Auswertung.
Laut Andreas gibt es hier einen Unterschied....

Benutzeravatar
sewe
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 295
Registriert: 16. Jan 2009 14:53
Kontaktdaten:

Re: lazy/eager Substitution/Evaluation

Beitrag von sewe »

Reduction bezieht sich darauf, wo Redundanzen vermieden werden: nur im Quellcode (static) oder auch zur Laufzeit (dynamic).

Lazy und Eager Substitution sind Spezialfälle von Lazy und Eager Evaluation; im Falle von Substitution geht es nur darum, ob der benannte Ausdruck in einem with bereits bei dessen Auswertung oder erst bei dessen Benutzung ausgerwertet wird. (Den Bezug zu Lazy und Eager Evaluation sieht man am besten, wenn man with in Funtkionsdefinition und -applikation übersetzt. Im Falle von Eager Substitution wird das "Argument", d.h., der benannte Ausdruck, bereits beim "Aufruf" ausgewertet.) Wie auch immer: Lazy und Eager Evaluation gehen jedenfalls über bloßes with hinaus und haben für jegliche Art von Ausdrücken Bedeutung, der aus Teilausdrücken zusammengesetzt ist.

Immediate und Deferred Substitution sind zu alldem orthogonal. Man kann sich alle vier Kombinationen von Lazy und Eager bzw. Immediate und Deferred vorstellen.

Antworten

Zurück zu „Archiv“