[Haskell-cafe] Re: Strange subtract operator behavior - and lazy
wnoise at ofb.net
Mon Oct 22 04:09:15 EDT 2007
On 2007-10-21, Yitzchak Gale <gale at sefer.org> wrote:
> I wrote:
> Yitzchak Gale wrote:
>>> So why not make the laziness available
>>> also for cases where "1 - 2 == 0" does _not_ do
>>> the right thing?
>>> data LazyInteger = IntZero | IntSum Bool Integer LazyInteger
>>> data LazyInteger = LazyInteger Bool Nat
>>> or whatever.
> Luke Palmer wrote:
>> data LazyInteger = IntDiff Nat Nat
>> The only value which would diverge when
>> compared to a constant would be infinity - infinity.
> Hmm. But then you could have integers that are
> divergent and non-infinite. What do we gain by
> doing it this way?
IntDiff is essentially fail-lazily for (Infinity - Infinity), rather
than fail-quickly of the other two. Sometimes fail-lazily is
appropriate, sometimes not. I don't think it makes too much difference
here though. My actual concern is about having to compute with IntDiff
(large) (large + x) many times instead of IntDiff 0 x. I'd rather one
of the two above, though I think I'd prefer explicity PosInt and NegInt
branches over an inscrutable boolean flag.
More information about the Haskell-Cafe