Snippet saved on:
4/26/2023, 4:53:04 PM (raw)
4/26/2023, 4:53:04 PM (raw)
LANGUAGE
importEffectful
importEffectful.Dispatch.Dynamic
importData.KindType
importEffectful.State.Static.Shared
data Event e m a where
RegisterHandler :: (e -> m ()) -> Event e m ()
RaiseEvent :: e -> Event e m ()
registerHandler::Eventees=>e->Effes()->Effes()
registerHandler = send . RegisterHandler
raiseEvent::Eventees=>e->Effes()
raiseEvent = send . RaiseEvent
type instanceDispatchOfEventeDynamic
runEvent::foralleesaEffEventeesa->Effesa
runEvent = reinterpret (evalState ([]::[e -> Eff es ()])) $ \env -> \case
(RegisterHandler act) -> localUnlift env (ConcUnlift Persistent Unlimited) $ \unlift -> modify @([e -> Eff es ()]) ((unlift . act) :)
GHC output
Errors
Output