module Aztecs.ECS.W (W (..)) where

-- | Read-write 'Queryable' component access.

data W m c = W
  { forall (m :: * -> *) c. W m c -> m c
readW :: m c,
    forall (m :: * -> *) c. W m c -> c -> m ()
writeW :: c -> m (),
    forall (m :: * -> *) c. W m c -> (c -> c) -> m ()
modifyW :: (c -> c) -> m ()
  }