Specific denotations for pure types
lennart at augustsson.net
Fri Mar 20 19:03:23 EDT 2009
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.
On Fri, Mar 20, 2009 at 11:17 PM, Achim Schneider <barsoap at web.de> wrote:
> Conal Elliott <conal at 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
> (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 at haskell.org
More information about the Haskell-prime