Haskell-Pfeile werden häufig so erklärt, dass sie einen gerichteten azyklischen Graph (DAG) von Berechnungen ausdrücken. Ich suche nach Werkzeugen oder Bibliothekscode, die diese Beziehung für die Programmierung mit Arrows verwenden würde.
Vom Pfeil zum Graphen kann ein Werkzeug helfen, den Arrow-Code zu visualisieren. Da der Code einer DAG von Berechnungen entspricht, ist eine visuelle Darstellung, die Berechnungsknoten und Ausgabe-zu-Eingabe-Kanten zeigt, natürlich. Ein Werkzeug könnte ein Diagramm erstellen, das mit Standard-Diagrammwerkzeugen angezeigt und bearbeitet werden kann.
Gibt es Arrow-Transformer, der eine beliebige Arrow-Klasse erweitert und die von & gt; & gt; & gt; und Operationen, und es möglich machen, die Berechnung als eine Graphik elementarer Pfeiloperationen zu untersuchen?
Angenommen, es gibt eine DAG, deren Knoten Arrow-Operationen sind. Gibt es ein Werkzeug, das daraus einen Pfeil konstruiert, der die gesamte DAG berechnet?
Ich habe viel über Haskell Arrows gegooglet, ohne solche Visualisierungswerkzeuge zu finden. Habe ich etwas verpasst? Vielleicht ist es nicht so natürlich, wie ich es erwarte.
Ein guter Ausgangspunkt ist es, die Pfeilgrafik mit einem sogenannten "Free Arrow
" anzugeben. In dieser Stack Overflow-Antwort finden Sie eine Implementierung von free Arrow
s . Betrachten Sie dies als eine syntaktische Darstellung Ihres Arrow
Graphen.
Das Schöne an free Arrow
s ist, dass sie die Struktur des Graphen beibehalten, die Sie dann als Diagramm darstellen können. Nachdem Sie das Verbindungsdiagramm angezeigt haben, können Sie mit einem Interpreter die freie Arrow
in die gewünschte Arrow
umwandeln. Eine nette Eigenschaft, die Arrow
s hat, ist, dass ein solcher Interpreter per Definition eindeutig sein muss (bis zu Isomorphie) (das ist eine der Eigenschaften, die ihn "frei" machen).