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