Ich möchte eine textbasierte Benutzeroberfläche in meinem Haskell-Programm verwenden. Ich habe einige Bindungen für die ncurses-Bibliothek gefunden (siehe auch hscurses or ncurses, which one to use?). Die hscurses
und nanocurses
Pakete sind nur einfache Wrapper rund um die C-Bibliothek, während vty
ist nicht sehr gut dokumentiert und ein bisschen hässlich (zum Beispiel Mischen von snake_case und CamelCase).Haskell `ncurses` Bibliothek
Die ncurses
Bibliothek auf Hackage sieht viel hübscher aus und bietet eine API, die gut zu Haskell passt. Das Problem ist, dass es einige entscheidende Funktionen, wie das Ändern der Größe oder das Aktualisieren der Fenster, nicht zu implementieren scheint.
Also meine Frage ist:
- gibt es eine andere UI-Bibliothek Haskell Text, entweder ncurses-basierte oder nicht, was ich verpasst?
- Wenn es niemanden gibt, ist es möglich, die
ncurses
Haskell-Bibliothek zu erweitern, um mindestens das Fenster zu aktualisieren und zu skalieren? (Dies sollte wahrscheinlich mit dem Projekteigentümer zu Rate gezogen werden, aber ich brauche die Lösung schnell)
EDIT:
habe ich schließlich nscurses
ohne Fenster (und Platten), um die Probleme zu vermeiden, mit ihnen zu aktualisieren. Ich hatte Probleme mit der Ausgabe in der unteren rechten Ecke eines Fensters (ein sehr ähnliches Problem wurde für gemeldet). Ich habe es gelöst, indem ich nicht geschrieben habe :).
Nun, das Hauptziel meines Programms ist es, Haskell zu präsentieren, und ich dachte, ich würde die Abstraktionen in 'ncurses' (wie Monade' Curses' und 'Update') verwenden, um zu zeigen, dass die Programmierung in Haskell hübscher ist als C. Aber 'hscurses' ist auf der gleichen" Ebene "wie pure Cncurses, so dass es als eine Demonstration von Haskell wenig Sinn hat. Ich werde versuchen, 'ncurses' zu erweitern; Wenn ich scheitere, werde ich 'hscurses' verwenden :). –
Die Curses-Bibliotheken sind Low-Level. Ich sehe keinen guten Weg, Haskell zu präsentieren, indem ich Terminal Blitting zeige :) Du könntest mehr Glück mit z. FRP Guis oder Bildverarbeitung ... –
Ich wollte Ncurses-basierte interaktive Schnittstelle als Teil eines größeren Programms (Pfadfindung in einem Labyrinth mit beweglichen Hindernissen) verwenden. Für den Moment druckt es nur den gefundenen Pfad zum Terminal, und ich dachte, es wäre cool, auch den gefundenen Pfad zu durchlaufen :). –