{-# LANGUAGE FunctionalDependencies #-}

module Aztecs.ECS.System.Queue.Class (ArrowQueueSystem (..)) where

import Aztecs.ECS.Access (MonadAccess)
import Control.Arrow (Arrow (..))

class (MonadAccess b m, Arrow arr) => ArrowQueueSystem b m arr | arr -> m where
  -- | Queue an `Access` to happen after this system schedule.
  queue :: (i -> m ()) -> arr i ()