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⑈ _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users