On 2007-10-21, Yitzchak Gale <[EMAIL PROTECTED]> 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 >>> 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 -><- _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe