Более простые альтернативные библиотеки Reactive? (Haskell)
Я изучаю Haskell и пытаюсь написать некоторые управляемые событиями программы.
Следующий код взят из учебника:http://www.haskell.org/haskellwiki/OpenGLTutorial2
main = do
(progname,_) <- getArgsAndInitialize
initialDisplayMode $= [DoubleBuffered]
createWindow "Hello World"
reshapeCallback $= Just reshape
angle <- newIORef (0.0::GLfloat) -- 1
delta <- newIORef (0.1::GLfloat) -- 2
position <- newIORef (0.0::GLfloat, 0.0) -- 3
keyboardMouseCallback $= Just (keyboardMouse delta position)
idleCallback $= Just (idle angle delta)
displayCallback $= (display angle position)
mainLoop
Состояния хранятся вIORef
s, что делает его похожим на императивный язык.
Я слышал, что есть другие API, кроме этогоGraphics.UI.GLUT
(например,Reactive
), но выглядит очень сложно.
Мой подход заключается в том, что библиотека предоставляет функциюrunEventHandler
и пользователь пишетhandler
который принимает списокEvent
и конвертировать их вIO ()
.
handler :: [Event] -> IO ()
runEventHandler :: ( [Event] -> IO () ) -> IO ()
Иmain
функция должна выглядеть так:
main = runEventHandler handler
Есть ли такие либы?
В настоящее время я реализую один с использованием многопоточности, но я беспокоюсь, что он может быть плохим в производительности ...