Actually, I've been wondering about this. If my understanding is correct, Haskell lists are basicly singly-linked lists of cons cells (is that correct?) A simple (I think) thing to do would be to make the lists doubly-linked and circular. That would let us do nice things like have O(1) primops for reverse, tail, (++) and other things that access lists at the end. However, I'm still pretty new to FP in general, so I don't know if there are any theoretical reasons why something like this couldn't work. Obviously lazy and infinite lists add some wrinkles, but I think it could be worked through.

BTW can you give some references to these known techniques?

Robert

Simon Marlow wrote:

On 07 October 2004 18:23, Ketil Malde wrote:


Couldn't readFile et al. provide the standard interface, but use
hGetBuf tricks (e.g. from your 'wc' entry) behind the curtains?


readFile does do buffering behind the scenes, that's not the problem.
The problem is doing the computation on a [Char] instead of a raw buffer
of bytes.

There are various known techniques that could be used to speed up GHC's
implementation of lists, none of which we've ever tried.  This might be
a good area for experimentation, if anyone's looking for something to do
in GHC.

Cheers,
        Simon
_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe

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

Reply via email to