
On Tue, Aug 01, 2006 at 02:57:31PM +0400, Bulat Ziganshin wrote:
John, Integer values in many cases used just to keep small numbers which can be larger than 2^32 (2^64) in rare cases. For example, "type FileSize = Integer" used in IO library. so it's important to keep operations on small Integers fast and use minimum amount of memory
how about:
data Integer = S# Int# | L# !(ForeignPtr MPZ)
That is more or less what it is now. The point was that turning it into a product type (one with only a single constructor) would open it to the various unboxing optimizations, potentially being a bigger win than treating small integers specially. It would be interesting to speed test some straight FFI bindings to gmp and the various other bignum libraries out there http://www.csc.fi/math_topics/Mail/FAQ/msg00015.html John -- John Meacham - ⑆repetae.net⑆john⑈