Int provides minimum of -2^29..2^29-1, and as far as I know the overflow/underflow semantics is implementation dependent.
Personally, I try to use Integer, unless I'm forced to use Int. -- Lennart On Fri, Mar 20, 2009 at 11:17 PM, Achim Schneider <bars...@web.de> wrote: > Conal Elliott <co...@conal.net> wrote: > >> I'd always assumed that pure (non-imperative) types have >> specific denotational models, so that for instance the denotation of >> something of type Int is either bottom or a (smallish) integer. >> > IIRC, Ints provide signed modulo at-least-31 bits arithmetic, which is a > clearly defined, but still utterly under-specified semantic. The idea > is that if you want to be safe, you can just use Integer and only be > bounded by the implementation's address width and swap space (I heard > that Integers break at MAX_INT^MAX_INT). The other idea is that Int is > a number type small enough to be as fast as possible, which, in > practise, means "fits into a register, together with some tag", which > excuses Int's existence where Int32 and Int64 are around. > > I'm all for defaulting to Integer and providing Natural (as an > potentially-unbounded alternative to Nat, which'd be one bit wider than > Int)... the (usually meagre) performance gains you can get by choosing > Int over Integer are worth an explicit type annotation, and with > Integer, you get non-modulo semantics, by default. Is that what you > want? > > -- > (c) this sig last receiving data processing entity. Inspect headers > for copyright history. All rights reserved. Copying, hiring, renting, > performance and/or quoting of this signature prohibited. > > > _______________________________________________ > Haskell-prime mailing list > Haskell-prime@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-prime > _______________________________________________ Haskell-prime mailing list Haskell-prime@haskell.org http://www.haskell.org/mailman/listinfo/haskell-prime