Gibt es eine normalisierende (oder fortwährende) Reduktionsstrategie für untypisierte Kombinatoren?

8

Inspiriert von dieser Frage war ich neugierig, ob es eine Reduktionsstrategie für untypisierte SKI-Kombinatoren gibt, von der bekannt ist, dass sie entweder normalisiert oder dauerhaft ist.

Wie beschrieben hier (Twelfed hier ), die nondeterminstic Regeln des combinator Kalkül sind diese:

Ixx

Kxyx

Sxyzxz(yz)

wenn x xxyxyxx

wenn y y 'xyxyyy

Rob Simmons
quelle

Antworten:

8

SKI-Kombinatoren wurden als Implementierungstechnik für Miranda verwendet, eine von David Turner entwickelte faule Funktionssprache. Die Reduktionsstrategie, nach der Sie suchen, besteht einfach darin, die Reduzierungen von links nach rechts durchzuführen (auch bekannt als normale Reihenfolge oder Reduzierung nach Namen). Das nennt man Reduzierung des SKI-Kombinators bezeichnet und ist von Natur aus faul. Wenn eine normalisierende Reduktionssequenz existiert, wird diese Reduktionsstrategie sie finden.

Ein Problem bei SKI-Kombinatoren besteht darin, dass sie die unglückliche Eigenschaft haben, während der Reduzierung zu einem exponentiellen Ausblasen der Codegröße zu führen.

Sehen:

  • DA Turner. Eine neue Implementierungstechnik für anwendungsbezogene Sprachen. Sanft. Prakt. und Exper., 9, S. 31-49, 1979.

  • Lambda-Kalkül und Kombinatoren: Eine Einführung, zweite Ausgabe von JR Hindley und JP Seldin

Dave Clarke
quelle