On Mon, Jul 28, 2003 at 12:56:04PM -0500, Tim Sweeney wrote: > Ben, > > I live in a different universe, but over here I prefer to represent files > purely as memory-mapped objects. In this view, there is no difference > between a read-only file and an immutable array of bytes (a byte being a > natural number between 0 to 255). A read-write file is then equivalant to a > mutable array (or a reference to a mutable array on a heap) of the same. > Treating these all as heap references tends to be cleaner, because you can > compare the references for equality, which is significant even for read-only > files, because two files which contain the same exact data are not > necessarily the same file, whereas opening the same file in two different > places should result in equal references. > > [...] > > In this manner, it's possible to get rid of all remnants of Unix-like > streams from a language's IO interface.
You certainly can't always mmap the whole file into memory at once (on a 32-bit architecture at least), because: 1) there are files that won't fit into 32-bit address space 2) ... and usually you don't have the whole address space for you. I mean there are mmaped libraries, stack, allocated memory, etc. so the address space can be somewhat fragmented. 3) after mmaping many big files (each fitting into 32-bit address space) you can run out of address space I've been bitten by all this problems and now I mmap my files in parts, mapping and unmapping them as needed. It can be done, but it is no longer that simple. > -Tim Best regards, Tom -- .signature: Too many levels of symbolic links _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell