module Synthesizer.Causal.Arrow where

import qualified Synthesizer.Causal.Process as Causal
import qualified Synthesizer.Generic.Signal2 as SigG2
import Control.Arrow (Arrow, )


class Arrow arrow => C arrow where
   apply ::
      (SigG2.Transform sig a b) =>
      arrow a b -> sig a -> sig b

instance C Causal.T where
   apply = Causal.apply

instance C (->) where
   apply = SigG2.map