I've recently run up against the following rather annoying inconsistency between haskell implementations:
HUGS: Nat> fromInteger 4294967264 :: Int Program error: {primIntegerToInt 4294967264} GHCI: Nat> fromInteger 4294967264 :: Int -32 I don't have nhc installed at the moment, so I can't tell you offhand which side of the debate it falls on. There are interesting arguments for both views, depending on whether you think of Int as being "Signed integers modulo 2^k" or "fast but impoverished integers". The difference only becomes a real problem when we add Int and Word: multiple sizes of signed and unsigned ints. How do we convert between them? In particular, how do we do a simple bitwise conversion between, say, Int32 and Word32? GHC takes the position that "fromIntegral is the only tool you will ever need". Hugs provides a special conversion routine for every pair of types. I'm trying to write code which works in both systems (and hopefully can be used in nhc as well). As a result, I'd love to see a consistent story here. It'd be lovely if the Haskell report took a stand on the issue, but I suspect that may be too much to hope for. Absent a cue in the report, it seems the FFI specification of the Int and Word should specify how to interconvert between the various types. I'm actually rather fond of the "integers modulo 2^k" view of Int and its ken. I think it does a grave disservice to beginning programmers to tell them that Int is simply a fast, impoverished Integer; I expect expert programmers to understand range limits and overflow. It also means that there are a few nice algebraic identites involving "fromInteger": (fromInteger (a + b) :: Int) == (fromInteger a + fromInteger b :: Int) (fromInteger (a - b) :: Int) == (fromInteger a - fromInteger b :: Int) etc... Frankly, though, I see compelling aesthetic arguments for either behavior. I'd rather implementations agreed on the behavior of fromInteger, than see my "favorite" behavior supported. -Jan-Willem Maessen PS - I should note that I don't use the FFI, nor do I have any immediate intention of doing so. I'm using Word types because comparison of Words interacts nicely with bitwise operations. _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell