2013-03-02 12 views
15

Chciałbym użyć interfejsu tekstowego w moim programie Haskell. Znalazłem kilka powiązań dla biblioteki ncurses (patrz także hscurses or ncurses, which one to use?). Pakiety hscurses i nanocurses są po prostu prostymi owijaczami w bibliotece C, podczas gdy vty nie jest dobrze udokumentowany i nieco brzydki (na przykład mieszanie snake_case i CamelCase).Biblioteka Haskella `ncurses`a

Biblioteka o Hackage w wersji ncurses wygląda znacznie ładniej i zawiera interfejs API, który pasuje do Haskella. Problem polega na tym, że nie wydaje się, aby wdrożyć pewne kluczowe funkcje, takie jak zmiana rozmiaru lub odświeżenie okien.

Więc moje pytanie brzmi:

  • jest jakiś inny tekst biblioteki UI Haskell, zarówno oparte na ncurses lub nie, które brakowało mi?
  • jeśli nie ma nikogo, czy możliwe jest rozszerzenie biblioteki Haskell o co najmniej ncurses, aby przynajmniej odświeżyć odświeżanie i zmianę rozmiaru okna? (Powinno to być prawdopodobnie konsultowane z inwestorem, ale muszę szybko rozwiązanie)

EDIT:

końcu wykorzystane nscurses bez okien (i paneli), aby uniknąć kłopotów z ich orzeźwiający. Miałem problemy z wyjściem do prawego dolnego rogu okna (bardzo podobny problem został zgłoszony dla Python's ncurses binding). Rozwiązałem go, nie pisząc tam :).

Odpowiedz

3

Z powodzeniem stosowałem nanoncurses i hscurses, moja aplikacja hmp3 ma binding, która była podstawą nanorurki.

Bez względu na to, co najprawdopodobniej będzie wymagać dobrego API wysokiego poziomu. hscurses ma przynajmniej abstrakcję pudełkową.

Nie będzie dobrze chodzić z hscurses.

+0

Cóż, głównym celem mojego programu jest przedstawienie Haskella i pomyślałem, że użyłbym abstrakcji w 'ncurses' (jak monada' Curses' i 'Update'), aby pokazać, że programowanie w Haskell jest ładniejsze niż C. Ale 'hscurses' jest na tym samym" poziomie "co czyste C, ale używanie go jako demonstracji Haskella nie ma większego sensu. Spróbuję rozszerzyć 'ncurses'; jeśli mi się nie uda, użyję 'hscurses' :). –

+0

Biblioteki curses są niskiego poziomu. Nie widzę dobrego sposobu na zaprezentowanie Haskella przez pokazanie bliskiego ciagnięcia :) Możesz mieć więcej szczęścia z np. Przetwarzanie obrazu lub obrazu FRP ... –

+0

Chciałem użyć interaktywnego interfejsu opartego na ncurses jako części większego programu (znalezienie ścieżki w labiryncie z ruchomymi przeszkodami). Na razie po prostu wypisuje znalezioną ścieżkę do terminala i pomyślałem, że byłoby fajnie wspierać także przechodzenie przez znalezioną ścieżkę :). –

9

Czy obejrzałeś vty-ui? Ma bardzo ładny podręcznik użytkownika z wieloma przykładami. Wierzę, że jest to w zasadzie opakowanie wokół vty.

+0

vty-ui nie instaluje się w systemie Windows, ponieważ zależy to od pakietu 'unix'. – MichalAntkiew

2

Istnieje inny dobry wybór dla opartych na tekście interfejsów użytkownika w haskell;

Brick jest napisany przez jtdaugherty, tę samą osobę, która opracowała vty-ui, która jest obecnie przestarzała.

Interfejs API to Declarative, który jest lepszy w prezentowaniu języka, takiego jak Haskell. również Documentation był świetny i kompletny.