Pure Haskell arbitrary length FFT library