Ich habe eine kleine Anwendung geschrieben, die meine Fortschritte in der TV-Serie verfolgt. Die Anwendung ist in Haskell mit funktionaler reaktiver Programmierung (FRP) mit reaktiven Bananen geschrieben.
Die Anwendung kann:
Ich habe Probleme, den Code zu schreiben, der eine neue TV-Serie zur Tabelle hinzufügt und die neuen Ereignisse verdrahtet. Das CRUD-Beispiel von hier hat nicht ganz geholfen Ich, weil ich mehr Anforderungen habe als nur ein Element aus der Liste auswählen.
Wie schreibe ich eine Funktion reactiveTable
wie die Funktion reactiveListDisplay
aus dem CRUD Beispiel in einer FRP-Weise? Wie können Ereignisse hinzugefügt werden, nachdem das Netzwerk kompiliert wurde?
Ich möchte die insertIntoTable-Methode so umgestalten, dass sie Ereignisse und Verhaltensweisen anstelle einfacher Rückrufe verwendet.
BEARBEITEN:
Ich habe versucht, die gtk TreeView mit einem ListStore Backend. In diesem Szenario benötigen Sie keinen dynamischen Ereigniswechsel. Ich habe die Funktion reactiveList
geschrieben, um ein Listenverhalten aus dem Einfügen zu erhalten, Ereignisse zu ändern und zu entfernen. Es funktioniert ^^
Ich bin offen für Kommentare und Vorschläge.
Es klingt, als ob Ihr Problem viel näher an der Bar liegt Tab Beispiel als die CRUD ein.
Die Grundidee für das Hinzufügen neuer Widgets - zusammen mit neuen Verhaltensweisen und Ereignissen - ist das sogenannte "dynamische Ereigniswechsel". Im Wesentlichen ist dies eine Möglichkeit, neu erstellte Ereignisse und Verhaltensweisen wieder in Ihr Netzwerk zu integrieren.
Die Aktion zum Erstellen eines neuen Widgets besteht aus zwei Teilen. Der erste Teil besteht darin, das Widget mit liftIO
zu erstellen. Der zweite ist, seine Eingaben zu erhalten und trimE
oder trimB
gegebenenfalls. Wenn ich die meisten GTK-spezifischen Details weglasse (ich weiß nicht, wie man GTK verwendet: P), sieht es ungefähr so aus:
Diese Funktion erstellt also ein neues Widget, "trimmt" ihre Eingaben und gibt die Werte an Sie zurück. Jetzt müssen Sie diese Werte tatsächlich verwenden:
%Vor% hier nameEvents
sollte ein Event String
sein, das jedes Mal ein Ereignis mit dem Namen der neuen Serie enthält, wenn Sie es hinzufügen möchten.
Nun, da Sie einen Stream aller neuen Staffeln haben, können Sie alles zu einem einzigen Verhalten einer Liste von Einträgen kombinieren, die etwas wie stepper
verwenden.
Weitere Einzelheiten - einschließlich Informationen zum Abrufen der Aggregatdaten aus allen Ihren Widgets - finden Sie im aktuellen Beispielcode.
Tags und Links haskell reactive-programming frp reactive-banana