
Hi, Consider the following type classes: class (Signal sx) => Complexable sx where type ComplexSignalType .... class (Complexable sx) => FourierTransformable sx where fft :: (cx ~ ComplexSignalType sx) => cx -> cx .... and an instance: instance (RealFloat e) => Complexable [e] where type ComplexSignalType = [Complex e] instance (RealFloat e) => FourierTransformable [e] where fft = ... Why this example will give errors: *DSP.Signals.Core Prelude Data.Complex> :t ax ax :: [Complex Double] *DSP.Signals.Core Prelude Data.Complex> fft ax <interactive>:90:1: No instance for (FourierTransformable s0 [Complex Double]) arising from a use of ‘fft’ The type variable ‘s0’ is ambiguous Note: there is a potential instance available: instance [overlap ok] (RealFloat e, Math.FFT.Base.FFTWReal e) => FourierTransformable [e] [Complex e] -- Defined at src/DSP/Signals/Instances/List.hs:40:10 In the expression: fft ax In an equation for ‘it’: it = fft ax Thanks! -- Lemol-C 50 Aniversario de la Cujae. Inaugurada por Fidel el 2 de diciembre de 1964 http://cujae.edu.cu