2013-03-02 7 views
15

하스켈 프로그램에서 텍스트 기반 UI를 사용하고 싶습니다. ncurses 라이브러리에 대해 몇 가지 바인딩을 찾았습니다 (hscurses or ncurses, which one to use? 참조). hscursesnanocurses 패키지는 C 라이브러리를 둘러싼 단순한 래퍼 일 뿐이며 vty은 문서화가 잘되어 있지 않으며 약간 못 생겼습니다 (예 : snake_case와 CamelCase를 혼합).하스켈`ncurses` 라이브러리

Hackage의 ncurses 라이브러리는 훨씬 더 예쁘게 보이며 Haskell에 잘 맞는 API를 제공합니다. 문제는 창의 크기를 조정하거나 새로 고치는 것과 같은 몇 가지 중요한 기능을 구현하지 않는 것입니다.

그래서 제 질문은 :

  • 내가 놓친하는 다른 하스켈 텍스트 UI 라이브러리가, 하나의 ncurses는 기반 또는하지?
  • 누군가가 없으면 적어도 상쾌하게하고 사이즈를 바꾸는 윈도우를 지원하기 위해 Haskell 라이브러리 ncurses을 확장 할 수 있습니까? (이 아마 프로젝트 소유자와 협의,하지만 신속하게 솔루션을 필요로한다)

편집 : 나는 마침내 그들을 새로 고침으로 문제를 방지하기 위해 창 (및 패널)없이 nscurses를 사용

. 윈도우의 오른쪽 하단에 출력 문제가있었습니다 (매우 유사한 문제가 Python's ncurses binding에 대해보고되었습니다). 나는 거기에 쓰지 않음으로써 그것을 해결했다.

답변

3

저는 nanoncurses와 hscurses를 성공적으로 사용했으며, hmp3 앱에는 nanocurses의 기초가 된 binding이 있습니다.

아무리 훌륭한 고급 API를 원한다해도 상관 없습니다. hscurses는 적어도 박스 추상화를 가지고 있습니다.

당신은 hscurses와 잘 어울릴 것입니다.

+0

글쎄, 내 프로그램의 주된 목표는 하스켈을 제시하는 것이고 하스켈에서의 프로그래밍이 C보다 더 예쁘다는 것을 나타 내기 위해'ncurses' (모나드'Curses'와'Update'와 같은)에서 추상화를 사용할 것이라고 생각했습니다. 'hscurses'는 순수한 소스 코드와 같은 "레벨"에 있으므로, 하스켈의 시연으로 사용하는 것은별로 의미가 없습니다. 나는'ncurses'를 확장하려고 노력할 것입니다; 내가 실패하면'hscurses'를 사용합니다 :). –

+0

저주 라이브러리는 낮은 레벨입니다. 나는 터미널 블리 팅을 보여줌으로써 하스켈을 제시하는 좋은 방법을 보지 못했다. FRP guis 또는 이미지 처리 ... –

+0

큰 프로그램의 일부로 ncurses 기반 인터랙티브 인터페이스를 사용하고 싶었습니다 (움직이는 장애물이있는 미로에서 찾는 경로). 현재로서는 발견 된 경로를 터미널에 인쇄하기 만하면 찾을 경로를 따라 움직이는 것을 지원하는 것이 좋습니다. :) –

9

vty-ui을 보았습니까? 그것은 예제를 많이 가진 아주 좋은 사용자 설명서가 있습니다. 근본적으로 vty에 대한 래퍼라고 생각합니다.

+0

vty-ui는 'unix' 패키지에 의존하기 때문에 Windows에 설치되지 않습니다. – MichalAntkiew

2

haskell의 텍스트 기반 사용자 인터페이스에는 또 다른 좋은 선택이 있습니다.

Brick은 현재 vty-ui를 개발 한 사람과 동일한 jtdaugherty가 작성했습니다.이 사용자는 현재 더 이상 사용되지 않습니다.

API는 Declarative이며 하스켈과 같은 언어를 제공하는 것이 좋습니다. 또한 Documentation은 훌륭하고 완벽했습니다.