haskell - Dynamic Event Switching in Reactive-Banana -


i working on small game utilizing reactive banana , sdl. since goal learn more reactive banana , frp, attempted use dynamic switching set collection of game objects, without success far.

in bartab example, example uses event switching i've found, event triggers creation of new entry in collection acquired outside event network instead of using internal event. question is: way or special case example?

are there more examples of dynamic event switching being used in reactive banana?

from understand moment t (anytime behavior a), use execute create event t (anytime behavior a), in turn used update behavior carrying collection. moment t (anytime behavior a) created using trimb on behavior created triggering event. if triggering event originates in event network, doesn't compile error message "could not deduce (t ~ t1)". i'm not sure ~ means, throws error because 2 frameworks values (t) of event network , new moment value different.

so, long story short, don't understand how event switching in reactive banana works , i'm not sure why. should relatively straightforward in theory.

edit:

-- event network -- ========================== setupnetwork :: forall t. frameworks t => (eventsource command, eventsource ()) -> ioref spritemap -> gamemap -> moment t () setupnetwork ((addhandlere, _), (addhandlert, _)) sprites map =          -- input events         ----------------         einput <- fromaddhandler addhandlere -- player commands         eframe <- fromaddhandler addhandlert -- event on each frame          let             [...]               espawnevent :: event t (dscoord)             espawnevent = extractcoord <$> eleftclick                                          extractcoord (leftclick c) = c              spawnpos :: frameworks s => moment s (anymoment behavior dscoord)             spawnpos = trimb $ stepper (0,0) espawnevent          espawnpos <- execute $ (frameworksmoment spawnpos <$ espawnevent)                 [...] 

i tried mirror newentry / enewentry example, using normal event create new behavior. produces "could not deduce (t ~ s)" error in spawnpos.

edit2:

it works, same error comes on line use execute create event. "could not deduce t ~ t1"

it appears me code correct except minor mistake:

the compiler rightly complains spawnpos has (polymorphic) starting time s while starting time of espawnevent fixed t, different. latter time brought scope via forall t part in type signature of setupnetwork. in other words, t represents starting time of whole network.

the simple fix change offending line to

spawnpos :: frameworks t => moment t (anymoment behavior dscoord) 

Comments

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -