{- |
Copyright   :  (c) Henning Thielemann 2008
License     :  GPL

Maintainer  :  synthesizer@henning-thielemann.de
Stability   :  provisional
Portability :  requires multi-parameter type classes

Class that allows unified handling of @RP.T@ and @SigP.T@
whenever the applied function does not depend on the sample rate.
Unfortunately, Haskell's type system cannot check this property,
so use this abstraction only for signal processes that are actually sample rate independent.
module Synthesizer.Dimensional.Abstraction.RateIndependent where

-- import qualified Synthesizer.Dimensional.RatePhantom as RP
-- import qualified Synthesizer.Dimensional.RateWrapper as SigP

-- import qualified Number.DimensionTerm        as DN
-- import qualified Algebra.DimensionTerm       as Dim

import qualified Algebra.Module         as Module
import qualified Algebra.Field          as Field
import qualified Algebra.Ring           as Ring

-- import Number.DimensionTerm ((&/&))

-- import NumericPrelude
-- import PreludeBase
-- import Prelude ()

class C w where
   toSignal :: w sig y -> sig y
   processSignal :: (sig0 y0 -> sig1 y1) -> w sig0 y0 -> w sig1 y1