### Re: Specific denotations for pure types

Lennart Augustsson <

lennart@...>

2009-03-20 23:03:23 GMT

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 <barsoap@...> wrote:
> Conal Elliott <conal@...> 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@...
> http://www.haskell.org/mailman/listinfo/haskell-prime
>