> Thanks for all the advice. In the end, I couldn't make $! work for me 
> (it always seems to be harder than I think it will be to use it, and $! 
> and deepSeq makes my code run slowly). 

:-(

> But a continuation passing style foldl worked wonderfully.

As Jay Cox pointed out by email, my answer was rot because I
had confused foldl and foldr

> I now have:
> 
>  > cpsfold f a [] = a
>  > cpsfold f a (x:xs) = f x a (\y -> cpsfold f y xs)
> 
> and f takes a continuation, Bob's my uncle, and I have a program that 
> runs quickly in constant space!

Good.  I'm curious to know from other readers whether
continuations like this are the only way of solving it,
though.

  Jón


-- 
Jón Fairbairn                                 [EMAIL PROTECTED]
31 Chalmers Road                                         [EMAIL PROTECTED]
Cambridge CB1 3SZ            +44 1223 570179 (after 14:00 only, please!)


_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to