08.10.2013 Aufrufe

Download (1405Kb)

Download (1405Kb)

Download (1405Kb)

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

72 KAPITEL 4. DIE STANDARDSEMANTIKEN<br />

die allgemeine Verwendung der lo-Reduktionsstrategie für den cbn-Auswertungsmechanismus. Programme<br />

(erster Ordnung) funktionaler Programmiersprachen wie Miranda, Haskell und Hope sind<br />

in gewisser Weise auch nur Programme mit Hilfsfunktionen und keine mit Pattern, wie wir in<br />

Kapitel 7 sehen werden.<br />

Allerdings geben die mit dem cbn-Auswertungsmechanismus arbeitenden funktionalen Programmiersprachen<br />

für interaktive Ein- und Ausgabe auch Approximationen potentiell unendlicher Datenstrukturen<br />

aus. Jedoch handelt es sich bei diesen ausgegebenen Datenstrukturen immer um<br />

Listen und um keinen anderen algebraischen Datentyp (alle Ausgaben werden in Zeichenketten<br />

(Strings), also Listen konvertiert). Diese ” passen“ aufgrund ihres speziellen Aufbaus genau zur<br />

lo-Reduktionsstrategie.<br />

Beispiel 4.11 lo-Reduktion und unendliche Listen<br />

liste1’ → a:liste1’<br />

a → []<br />

[[liste1 ′ ]] fix<br />

P,cbn = [[], [], [], . . .].<br />

Dieser unendliche Konstruktorterm wird auch durch die lo-Reduktionsstrategie approximiert:<br />

liste1 ′ −−→ a : liste1<br />

P,lo ′ −−→ [] : liste1<br />

P,lo ′ −−→ [] : a : liste1<br />

P,lo ′ −−→ . . ..<br />

P,lo<br />

Die zur lo-Reduktionsstrategie symmetrische rightmost-outermost Reduktionsstrategie produziert<br />

dagegen<br />

liste1 ′ <br />

P,ro<br />

[·]<br />

<br />

alg<br />

a : liste1 ′ <br />

⊥cbn <br />

P,ro<br />

[·]<br />

<br />

alg<br />

a : a : liste1 ′ <br />

⊥cbn <br />

P,ro<br />

[·]<br />

<br />

alg<br />

. . .<br />

⊥cbn ⊥ ⊥ : ⊥ ⊥ : ⊥ : ⊥ . . .<br />

Wären die Argumente des Listenkonstruktorsymbols Cons bzw. : in der umgekehrten Reihenfolge,<br />

dann wäre somit die rightmost-outermost Reduktionsstrategie ” passend“. Freilich hat die leftmostoutermost<br />

Reduktionsstrategie auch bei Listen ihre Grenzen:<br />

Das Miranda-Programm<br />

liste3 = 1:2:undef:3:[]<br />

(undef = undef) produziert zu der Eingabe liste3 nur die Ausgabe:<br />

[1,2,<br />

Bei Betrachtung realer funktionaler Programmiersprachen gehören in diesen Zusammenhang jedoch<br />

auch noch Begriffe wie head-normal form und weak head-normal form, auf die wir jedoch nicht<br />

eingehen wollen (siehe [Fie&Har88]).<br />

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!