2013-03-02 60 views
15

Tôi muốn sử dụng giao diện người dùng dựa trên văn bản trong chương trình Haskell của mình. Tôi tìm thấy một số ràng buộc cho thư viện ncurses (xem thêm hscurses or ncurses, which one to use?). Các gói hscursesnanocurses chỉ là trình bao bọc đơn giản xung quanh thư viện C, trong khi vty không được tài liệu tốt và có chút xấu xí (ví dụ: trộn snake_case và CamelCase).Thư viện của Haskell `ncurses '

Thư viện ncurses trên Hackage trông đẹp hơn và cung cấp API phù hợp nhất với Haskell. Vấn đề là nó dường như không thực hiện một số tính năng quan trọng, như thay đổi kích thước hoặc làm mới các cửa sổ.

Vì vậy, câu hỏi của tôi là:

  • là có bất kỳ thư viện giao diện người dùng Haskell văn bản khác, hoặc kernel-based hay không, mà tôi bỏ lỡ?
  • nếu không có ai, có thể mở rộng thư viện ncurses Haskell để ít nhất hỗ trợ cửa sổ làm mới và thay đổi kích thước không? (Điều này nên có thể tham khảo ý kiến ​​với các chủ dự án, nhưng tôi cần các giải pháp một cách nhanh chóng)

EDIT:

cuối cùng tôi đã sử dụng nscurses không có cửa sổ (và tấm) để tránh những rắc rối với làm mới chúng. Tôi gặp sự cố với đầu ra ở góc dưới cùng bên phải của cửa sổ (một vấn đề rất giống đã được báo cáo cho Python's ncurses binding). Tôi giải quyết nó bằng cách không viết ở đó :).

Trả lời

3

Tôi đã sử dụng nanoncurses và hscurses thành công, ứng dụng hmp3 của tôi có một binding đó là cơ sở cho nanocurses.

Không có vấn đề gì bạn có thể sẽ muốn có API cấp cao đẹp. hscurses không có một hộp trừu tượng ít nhất.

Bạn sẽ ổn với các dấu vết.

+0

Vâng, mục tiêu chính của chương trình của tôi là trình bày Haskell và tôi nghĩ tôi sẽ sử dụng các thuật toán trừu tượng trong 'ncurses' (như monad' Curses' và 'Update') để cho thấy chương trình trong Haskell đẹp hơn C. 'hscurses' nằm trên cùng một" mức độ "như các ncurses thuần túy của C, vì vậy việc sử dụng nó như là một minh chứng của Haskell không có nhiều ý nghĩa. Tôi sẽ cố gắng mở rộng 'ncurses'; nếu tôi thất bại, tôi sẽ sử dụng 'hscurses' :). –

+0

Thư viện curses ở mức độ thấp. Tôi không nhìn thấy một cách tốt để trình bày Haskell bằng cách hiển thị blitting thiết bị đầu cuối :) Bạn có thể có may mắn hơn với ví dụ FRP guis hoặc xử lý hình ảnh ... –

+0

Tôi muốn sử dụng giao diện tương tác dựa trên ncurses như một phần của chương trình lớn hơn (tìm đường trong mê cung với các chướng ngại vật di chuyển). Bây giờ, nó chỉ in đường dẫn đến terminal, và tôi nghĩ rằng nó sẽ rất tuyệt vời để hỗ trợ cũng bước qua con đường tìm thấy :). –

9

Bạn đã xem vty-ui chưa? Nó có một hướng dẫn sử dụng rất tốt đẹp với rất nhiều ví dụ. Tôi tin rằng đó là bản chất một wrapper xung quanh vty.

+0

vty-ui không cài đặt trên Windows vì nó phụ thuộc vào gói 'unix'. – MichalAntkiew

2

Có một lựa chọn tốt khác cho giao diện người dùng dựa trên văn bản trong haskell;

Brick được viết bởi jtdaugherty, cùng một người phát triển vty-ui hiện không được chấp nhận.

API là Declarative, Tốt hơn để trình bày một ngôn ngữ như Haskell. cũng là Documentation thật tuyệt vời và đầy đủ.

Các vấn đề liên quan