Ich bin mir nicht sicher, wie man eine nützliche Bibliothek mithilfe von Kombinatoren erstellt

8

Ich habe über Kombinatoren gelesen und gesehen, wie nützlich sie sind (zum Beispiel in Haskells Parsec). Mein Problem ist, dass ich mir nicht ganz sicher bin, wie ich sie praktisch anwenden soll.

Hier ist ein Überblick über das Problem: Verteilungen können erzeugt, gefiltert und modifiziert werden. Distributionen können kombiniert werden, um neue Distributionen zu erstellen.

Die grundlegenden Schnittstellen sind (in Pseudo-Haskell-Typ-Terminologie):

%Vor%

Nun, ich denke, dass ich drei Kombinatoren sehe:

%Vor%

Sind das eigentlich Kombinatoren? Machen die Kombinatoren Sinn / gibt es noch andere offensichtliche Kombinatoren, die ich vermisse?

Danke für irgendeinen Rat.

    
Matt Fenwick 16.08.2011, 17:02
quelle

1 Antwort

5

Die Funktionen selector und modifier sind bereits vollkommen gute Kombinierer! Zusammen mit generator und combine kannst du sowas machen (ich gehe von statistischen Verteilungen für Konkretheit aus und erfinde Dinge!):

%Vor%

Sie müssen vielleicht etwas mit der Priorität des Mähdrescher-Bedieners herumspielen, damit dies reibungslos funktioniert:)

Wenn ich versuche, eine Kombinator-Bibliothek für Werte vom Typ A zu erstellen, möchte ich im Allgemeinen meine A am Ende behalten, so dass die partiell angewendeten Kombinatoren (Ihr selector und modifier ) können zusammen mit . angekettet werden, anstatt flip durch Rahmen.

Hier ist ein schöner Blog-Artikel, der Ihnen helfen kann, Kombinatoren zu entwerfen, er hat mich sehr beeinflusst: Semantic Editor Combinators .

BEARBEITEN: Möglicherweise habe ich Ihre Frage wegen der Typensignatur von combine falsch gelesen. Vielleicht verpasse ich etwas, aber wären die Distributionen nicht die natürlicheren Objekte, an denen Ihr Kombinator arbeiten sollte?

    
yatima2975 16.08.2011, 19:26
quelle