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.
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!):
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?
Tags und Links haskell functional-programming higher-order-functions combinators