Ben Rudiak-Gould (Sun, Jul 27, 2003 at 09:35:41PM -0700): > > module System.ProposedNewIOModel (...) where > > I assume that all I/O occurs in terms of octets. I think that this > holds > true of every platform on which Haskell is implemented or is likely to > be > implemented. > > > type Octet = Word8
If it should be really generall the base type should be Bool. > File offsets are 64 bits on all platforms. This model never uses > negative > offsets, so there's no need for a signed type. (But perhaps it would > be > better to use one anyway?) BlockLength should be something appropriate > to > the architecture's address space. > > > type FilePos = Word64 > > type BlockLength = Int > > type FilePos = Integer > type BlockLength = Integer > > > data File -- abstract I would prefer: data ImmutableStore -- abstract data MutableStore -- abstract A note about buffering: Actually, current UNIX kernels do not support non-blocking descriptors; they support non-blocking open files. Furthermore, many programs will break if they encounter non-blocking mode. This means that you must not [change blocking mode] for a descriptor inherited from another program. See <http://cr.yp.to/lib/io.html>. > A value of type InputStream or OutputStream represents an input or > output > stream: that is, an octet source or sink. Two InputStreams or > OutputStreams compare equal iff reading/writing one also reads/writes > the > other. > > (Should I call these "ports" instead of "streams"? How about > "OctetSource" > and "OctetSink"?) > > > data InputStream -- abstract > > data OutputStream -- abstract Use data OctetSource -- abstract (or BitSource, s.a.) data OctetSink -- abstract (or BitSink, s.a.) for octets (or bits/bools) and data PacketSource -- abstract data PacketSink -- abstract to send complete packets of data by the latter. Sincerly, -- Stefan _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell