A pure-haskell implementation of the radix-2 DIT version of the Cooley-Tukey FFT algorithm.
A pure priority queue.
This package provides a test program for the pure-priority-queue package.
A Haskell-only implementation of the MD5 digest (hash) algorithm. This now supports the crypto-api class interface.
This package provides pure hash functions for pure and lazy bytestrings, implementing the same interface as the digest package.
For efficiency, use the digest package, which provides FFI bindings to efficient code from zlib, instead.
Performance compared to Data.Digest on a Mac Mini 2010, 2.4GHz Core 2 Duo, using Data.ByteString.Lazy.ByteString:
* Data.Digest.Pure.Adler32: 380 MB/s
* Data.Digest.Adler32: 4906 MB/s
* Data.Digest.Pure.CRC32: 232 MB/s
* Data.Digest.CRC32: 774 MB/s
The Mersenne twister is a pseudorandom number generator developed by Makoto Matsumoto and Takuji Nishimura that is based on a matrix linear recurrence over a finite binary field. It provides for fast generation of very high quality pseudorandom numbers. The source for the C code can be found here:
This library provides a purely functional binding to the 64 bit classic mersenne twister, along with instances of RandomGen, so the generator can be used with System.Random. The generator should typically be a few times faster than the default StdGen (but a tad slower than the impure 'mersenne-random' library based on SIMD instructions and destructive state updates.
To store passwords securely, they should be salted, then hashed with a slow hash function. This library uses PBKDF1-SHA256, and handles all the details. It is implemented in pure Haskell, with no C dependencies. For a faster implementation, the pwstore-fast package has the exact same API but is about 25 times faster due to its use of the cryptohash package, which is partly implemented in C. This pure Haskell version is visibly slower, but still quite usable.