Beispiele für die Erstellung benutzerdefinierter Kontrollfluss-Wörter

8

Forth ermöglicht es Benutzern, die Sprache zu ändern, indem sie neue Wörter für den Kontrollfluss definieren (über die im Standard angegebenen hinaus: DO, LOOP, BEGIN, BIS, WÄHREND, WIEDERHOLEN, VERLASSEN WENN, DANN, SONST, FALL, ENDCASE, usw .)

Gibt es gängige Beispiele für Menschen, die ihre eigenen neuen Kontrollflusswörter erstellen? Was sind typische und nützliche Beispiele? Oder hat der Standard bereits alles definiert, was Menschen wirklich brauchen?

Ich hoffe, Beispiele für nützliche Spracherweiterungen zu finden, die Akzeptanz gefunden haben oder allgemein hilfreich sind, um die Sprache ausdrucksstärker zu machen.

    
Raymond Hettinger 30.06.2017, 17:31
quelle

2 Antworten

7

Eine weitere große Richtung von Kontrollflussstrukturen in Forth ist backtracking . Es ist sehr ausdrucksstark und leistungsstarker Mechanismus. Um implementiert zu werden, muss die Adresse manipuliert werden.

Backtracking in Forth wurde von M. L. Gassananko in ~ 1988-1990 als BacFORTH-Erweiterung entwickelt.

Erste Papiere zu diesem Thema waren auf Russisch. Für einige Einführung siehe die kurze Beschreibung , und das Papier Verbesserung der Fähigkeiten des Backtracking durch MLGassananko (1998). Siehe auch eine Diskussion in comp.lang .fort (die Nachrichten von Gassanenko).

Nur ein Beispiel für einen Generator in BacFORTH:

%Vor%

Ausgabe:

%Vor%

Die PRO und CONT sind spezielle Kontrollflussworte. PRO bestimmt das Generatorwort und CONT ruft den Consumer auf - es ist in Ruby oder ECMAScript so etwas wie yield . Eine Reihe anderer spezieller Wörter ist ebenfalls in BacFORTH definiert. Sie können mit BacFORTH in SP-Forth spielen (fügen Sie einfach ~profit/lib/bac4th.f library hinzu).

Etymologie

Im Allgemeinen ist backtracking nur ein Algorithmus, um Lösungen zu finden. In Prolog wurde dieser Algorithmus unter die Haube eingebettet, so Zurückverfolgen in Prolog ist der Prozess, wie es selbst arbeitet. Backtracking in BacFORTH ist eine Programmiertechnik, die von einer Reihe spezieller Kontrollflussworte unterstützt wird.

    
ruvim 10.07.2017, 16:45
quelle
6

Hier ist ein Beispiel. CASE war eine etwas späte Ergänzung der Menge der Forth-Kontrollflussworte. Anfang 1980 wurde in Forth Dimensions ein Wettbewerb zur Definition des besten CASE-Statements angekündigt. Es wurde später in diesem Jahr mit einem Gleichstand zwischen drei Einträgen angesiedelt. Einer davon endete im Forth94-Standard.

    
Lars Brinkhoff 30.06.2017 18:17
quelle