{-# LANGUAGE FunctionalDependencies #-}
module Aztecs.ECS.System.Class (ArrowSystem (..)) where
import Aztecs.ECS.Query.Reader (QueryFilter (..))
import Control.Arrow (Arrow (..), (>>>))
import Prelude hiding (map)
class (Arrow arr) => ArrowSystem q arr | arr -> q where
map :: q i a -> arr i [a]
map_ :: q i o -> arr i ()
map_ q i o
q = q i o -> arr i [o]
forall i a. q i a -> arr i [a]
forall (q :: * -> * -> *) (arr :: * -> * -> *) i a.
ArrowSystem q arr =>
q i a -> arr i [a]
map q i o
q arr i [o] -> arr [o] () -> arr i ()
forall {k} (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>> ([o] -> ()) -> arr [o] ()
forall b c. (b -> c) -> arr b c
forall (a :: * -> * -> *) b c. Arrow a => (b -> c) -> a b c
arr (() -> [o] -> ()
forall a b. a -> b -> a
const ())
filterMap :: q i a -> QueryFilter -> arr i [a]
mapSingle :: q i a -> arr i a
mapSingleMaybe :: q i a -> arr i (Maybe a)