
On 2007-10-21, Yitzchak Gale
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 or 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. -- Aaron Denney -><-