Более простые альтернативные библиотеки 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

Состояния хранятся вIORefs, что делает его похожим на императивный язык.

Я слышал, что есть другие API, кроме этогоGraphics.UI.GLUT(например,Reactive), но выглядит очень сложно.

Мой подход заключается в том, что библиотека предоставляет функциюrunEventHandlerи пользователь пишетhandler который принимает списокEventи конвертировать их вIO ().

handler :: [Event] -> IO ()
runEventHandler :: ( [Event] -> IO () ) -> IO ()

Иmain функция должна выглядеть так:

main = runEventHandler handler

Есть ли такие либы?

В настоящее время я реализую один с использованием многопоточности, но я беспокоюсь, что он может быть плохим в производительности ...

Ответы на вопрос(1)

Ваш ответ на вопрос