Download (1405Kb)
Download (1405Kb)
Download (1405Kb)
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
4.2. DIE CBV-SEMANTIK 51<br />
Call-by-name Auswertung:<br />
head(liste1) −−→<br />
P<br />
head([] : liste1) −−→ []<br />
P<br />
Sowohl im Rahmen der Funktionsschemata ([Ind93], [Ind94]) als auch in dem des λ-Kalküls 1<br />
([Fie&Har88], Kapitel 6) werden die beiden Auswertungsmechanismen jeweils mit den Reduktionsstrategien<br />
leftmost-innermost ∗2 und leftmost-outermost gleichgesetzt. Hierbei heißt ein Redex<br />
eines Terms genau dann innermost£, wenn er keinen Redex als echten Teilterm enthält, und outermost,<br />
wenn er selbst kein echter Teilterm eines Redexes des Terms ist. Der leftmost Redex<br />
einer Menge von Redexen eines Terms ist dann der Redex, dessen Stelle die bezüglich der lexikographischen<br />
Ordnung kleinste Stelle all der Redexe der Menge ist. Bei der leftmost-innermost£<br />
Reduktionsstrategie wird in jedem Reduktionsschritt der leftmost-innermost ∗ Redex reduziert,<br />
und bei der leftmost-outermost Reduktionsstrategie entsprechend der leftmost-outermost Redex.<br />
In obigem Beispiel erfolgt die call-by-value Auswertung mit leftmost-innermost Reduktion und<br />
die call-by-name Auswertung mit leftmost-outermost Reduktion.<br />
Wir wollen nun auf Basis dieser beiden Auswertungsmechanismen zwei Semantiken für unsere<br />
Programme definieren.<br />
4.2 Die cbv-Semantik<br />
4.2.1 Die li-Reduktionssemantik<br />
Da die cbv-Semantik im allgemeinen mit der leftmost-innermost Reduktionsstrategie assoziiert<br />
wird, definieren wir diese für unsere Programme.<br />
Definition 4.1 Leftmost-innermost (li-) Reduktion<br />
Sei t ∈ TΣ.<br />
• Die Stelle u ∈ Occ(t) eines Redexes ˆ l = t/u ∈ RedP von t heißt genau dann innermost<br />
Redexstelle des Terms t, wenn<br />
• ˆ l = f(c1, . . .,cn) mit f (n) ∈ F, c1, . . .,cn ∈ TC, oder<br />
• ˆ l = selG,i(c) mit selG,i ∈ H, c ∈ TC, oder<br />
• ˆ l = condG(c, t1, t2) mit condG ∈ H, c ∈ TC, t1, t2 ∈ TΣ ist.<br />
• Die bezüglich der lexikographischen Ordnung kleinste innermost Redexstelle von t heißt<br />
leftmost-innermost Redexstelle des Terms t.<br />
u<br />
• Eine Reduktion A = t −−→ t<br />
l→r ′ heißt genau dann leftmost-innermostReduktion, wenn u<br />
die li-Redexstelle von t ist. Hierdurch ist auch die leftmost-innermost Reduktionsstrategie<br />
−−→<br />
Èli definiert.<br />
1<br />
Im λ-Kalkül wird allerdings normalerweise nur die Reduktion bis zur sogenannten weak head-normal form<br />
betrachtet.<br />
2<br />
Wir markieren hier den Begriff innermost mit einem ∗, da wir im folgenden innermost etwas von dem in der<br />
Literatur verwendeten Begriff abweichend definieren werden. Wir gehen an entsprechender Stelle noch hierauf ein.<br />
✷<br />
✷