"Simon Brenner" <[EMAIL PROTECTED]> writes:

> The key is letting haskell be lazy and produce the output one item at
> a time.

True.
> This solution goes up to 100k in 25M of heap and up to 400k in 200M of
> heap. While working better, the space requirement seems to be (at
> least almost) quadratic, so this is probably not a complete solution
> to your problem (unless all you really needed was those 10k elements,
> or at most 400k).

Hmmm... what were you testing?

 :m Data.Array
Prelude Data.Array> let test upb = let a = listArray (1,upb) (repeat False) in  
a//map (\n->(2^n,not (a!(2^n)))) [1..floor (logBase 2 $ fromIntegral upb)] ! 
upb 
(0.02 secs, 1567316 bytes)
Prelude Data.Array> test 100000
False
(0.02 secs, 1310876 bytes)
Prelude Data.Array> test 400000
False
(0.09 secs, 3710792 bytes)
Prelude Data.Array> test 800000
False
(0.16 secs, 6913864 bytes)
Prelude Data.Array> 



-- 
Jón Fairbairn                                 [EMAIL PROTECTED]


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to