обычная программа wxHaskell выглядитStateT и WX гуй Сосуществование
main = do
run gui
gui = do
....
....
графический интерфейс должен иметь тип IO a
, бег имеет тип IO a -> IO()
, также есть некоторые процедуры инициализации в run
.
Я Тринг сделать следующее:
data AppGlobals = AG { ... some data ... }
type MApp a = StateT AppGlobals IO a
Но в этом случае графического интерфейса должен иметь тип gui :: MApp AppGlobals
. Из-за его типа становится невозможным использовать обычный синтаксис монады IO, я имею в виду, что я должен использовать liftIO
каждый раз, когда выполняю операцию ввода-вывода.
Есть ли подходящая возможность использовать государственную монаду в wxHaskell? Невозможно передать состояние каждому обработчику событий вручную.
В WX и WXCore есть два немного разных интерфейса. В WXCore используется 'run', тогда как в WX используется' start'. У них такой же тип. –