{-# LANGUAGE GADTSyntax #-}
{-# LANGUAGE TypeInType #-}
{-# OPTIONS_GHC -Wall #-}
module Streaming.FFT.Types
(
Signal(..)
, Bin(..)
, Transform(..)
, Window(..)
) where
import Data.Kind (Type)
import Control.Monad.Primitive
import Data.Complex
import Data.Primitive.PrimArray
import Prelude hiding (undefined, Rational)
newtype Window :: (Type -> Type) -> Type -> Type where
Window :: MutablePrimArray (PrimState m) (Complex e) -> Window m e
newtype Transform :: (Type -> Type) -> Type -> Type where
Transform :: MutablePrimArray (PrimState m) (Complex e) -> Transform m e
newtype Signal e = Signal Int
newtype Bin e = Bin Int