packages feed

helic-0.3.0.0: lib/Helic/Interpreter/Agent.hs

module Helic.Interpreter.Agent where

import Polysemy.Tagged (Tagged, untag)

import Helic.Data.Event (Event)
import Helic.Effect.Agent (Agent (Update))

interpretAgent ::
  ∀ id r .
  (Event -> Sem r ()) ->
  InterpreterFor (Tagged id Agent) r
interpretAgent handle sem =
  interpreting (untag sem) \case
    Update e ->
      handle e