Hello John, Tuesday, August 1, 2006, 5:19:37 AM, you wrote:
> This has made me wonder whether we are better off getting rid of the > small integer optimization and turning Integer into a straight > unboxable ForeignPtr to a GMP number. this would also mean we could use > the standard GMP that comes with the system since ForeignPtr will take > care of GCing Integers itself. This was my plan with jhc, but at the > moment, Integer is still just intmax_t. > Another option would be to keep the small integer optimization but make > it CPR > data Integer = Integer Int# !(Ptr MPZ) > where if the Ptr is NULL then the Int# contains the value... 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) ? -- Best regards, Bulat mailto:[EMAIL PROTECTED] _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users