Einfachere alternative Bibliotheken zu Reactive? (Haskell)
Ich lerne Haskell und versuche, ereignisgesteuerte Programme zu schreiben.
Der folgende Code stammt aus dem Tutorial: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
Die Zustände sind in gespeichertIORef
s, wodurch es wie eine imperative Sprache aussieht.
Ich habe gehört, dass es andere APIs gibtGraphics.UI.GLUT
, (z.B.Reactive
), aber es sieht sehr kompliziert aus.
Mein Ansatz ist, dass die lib eine Funktion bereitstelltrunEventHandler
und der Benutzer schreibt ahandler
das akzeptiert Liste vonEvent
s und konvertieren sie zuIO ()
.
handler :: [Event] -> IO ()
runEventHandler :: ( [Event] -> IO () ) -> IO ()
Und dasmain
Funktion sollte so aussehen:
main = runEventHandler handler
Gibt es solche Bibliotheken?
Ich implementiere derzeit eine mit Multithreading, aber ich mache mir Sorgen, dass es in der Leistung schlecht sein könnte ...