2010-03-11 3 views
1

보통 wxHaskell 프로그램이 보인다, 실행이 IO a -> IO()을 입력있다, 또한 run에서 일부 초기화 루틴이있다.StateT 및 WX의 GUI의 coexistance

data AppGlobals = AG { ... some data ... } 
type MApp a = StateT AppGlobals IO a 

을하지만,이 경우 GUI에서 유형 gui :: MApp AppGlobals이 있어야합니다

나는 다음을 수행 트링하고있다. 그것의 타입으로 인해 일반적인 입출력 모나드 구문을 사용하는 것이 불가능하게되고, 나는 IO 작업을 수행 할 때마다 liftIO을 사용할 것을 의미합니다.

거기에 wxHaskell에서 State Monad를 사용할 가능성이 있습니까? 각 이벤트 핸들러에 상태를 수동으로 전달하는 것은 그리 설득력이 없습니다.

답변

0

내가 읽고 쓰는 wxHaskell 프로그램은 상태를 변수로 변경합니다.
http://wxhaskell.sourceforge.net/doc/Graphics-UI-WX-Variable.html

여기 좋은 개요입니다 : http://legacy.cs.uu.nl/daan/download/papers/wxhaskell.pdf

그리고 그들은 시작이 아니라 실행 사용합니다.

+0

WX 및 WXCore에는 두 개의 약간 다른 인터페이스가 있습니다. WXCore에서는'run'을 사용했고 WX에서는'start'를 사용했습니다. 그들은 같은 유형입니다. –

0

이론적으로는 가능하지만 실제로는 성가신 것으로 나타났습니다. JA는 제안

http://wewantarock.wordpress.com/2010/01/11/custom-controls-in-wxhaskell-part-3/

당신은 같은 목적을 위해, wxHaskell 변수를 사용할 수 있습니다 내가에서 사용되는 더 명시 적 스타일을 선호하지만, : 나는 참조 된 블로그 문서에서 설명하는 것처럼 내 자신의 wxHaskell 코드는 일반적으로 무언가를 찾습니다 블로그.