2013-03-02 10 views
15

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 :).

Antwort

3

Ich habe nanoncurses und hscurses erfolgreich verwendet, meine hmp3 App hat eine binding, die die Grundlage für Nanocuses war.

Egal, was Sie wahrscheinlich eine gute High-Level-API wollen. hscurses hat zumindest eine Box-Abstraktion.

Mit hscurses gehen Sie gut.

+0

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 :). –

+0

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 ... –

+0

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 :). –

9

Haben Sie sich vty-ui angesehen? Es hat ein sehr schönes Benutzerhandbuch mit vielen Beispielen. Ich glaube, es ist im Wesentlichen ein Wrapper um Vty.

+0

vty-ui wird nicht unter Windows installiert, da dies vom 'unix'-Paket abhängt. – MichalAntkiew

2

Es gibt eine weitere gute Wahl für textbasierte Benutzeroberflächen in haskell;

Brick wird von jtdaugherty geschrieben, dieselbe Person, die vty-ui entwickelt hat, die jetzt veraltet ist.

Die API ist Declarative, die für eine Sprache wie Haskell besser ist. auch die Documentation war großartig und komplett.