module Synthesizer.Causal.Arrow where import qualified Synthesizer.Causal.Process as Causal import qualified Synthesizer.Generic.Signal as SigG import Control.Arrow (Arrow, ) class Arrow arrow => C arrow where apply :: (SigG.Transform sig a, SigG.Transform sig b) => arrow a b -> sig a -> sig b instance C Causal.T where apply :: forall (sig :: * -> *) a b. (Transform sig a, Transform sig b) => T a b -> sig a -> sig b apply = forall (sig :: * -> *) a b. (Transform sig a, Transform sig b) => T a b -> sig a -> sig b Causal.apply instance C (->) where apply :: forall (sig :: * -> *) a b. (Transform sig a, Transform sig b) => (a -> b) -> sig a -> sig b apply = forall (sig :: * -> *) y0 y1. (Transform0 sig, Storage (sig y0), Storage (sig y1)) => (y0 -> y1) -> sig y0 -> sig y1 SigG.map