[Haskell-cafe] Strange subtract operator behavior - and lazy naturals

John Meacham john at repetae.net
Wed Oct 17 21:01:59 EDT 2007


On Wed, Oct 17, 2007 at 05:43:08PM -0700, David Benbennick wrote:
> This module doesn't appear to be very lazy to me.  For example, in ghci,
> 
> *Util.LazyNum List> genericLength (1:2:undefined) > (1 :: Nat)
> *** Exception: Prelude.undefined
> 
> How is this module intended to be used?

Oops, sorry, the version I posted was an intermediate one that had a
different addition algorithm. here is a better one that fixes that issue:

Zero + y = y
Sum x n1 + y = Sum x (y + n1)  

note that it alternates the order in the recursive call, interleaving
the elements of the two arguments.

so, this is head-strict in the left argument, but tail-lazy in both. 

        John

-- 
John Meacham - ⑆repetae.net⑆john⑈


More information about the Haskell-Cafe mailing list