[Haskell-cafe] carry "state" around ....
Brandon S. Allbery KF8NH
allbery at ece.cmu.edu
Mon Jul 28 03:14:26 EDT 2008
On 2008 Jul 28, at 2:41, Galchin, Vasili wrote:
> So based on what you are saying I kind of need a Haskell AIO
> "imperative"/monadic function that basically returns a handle that
> is associated with this AIOCB chunk-of-memory .... This handle gets
> passed around during an AIO I/O session?? Sorry for talking too
> "imperatively" ;^) <<< smiley face ;^)
I/O *is* monadic in Haskell, so you're kinda there anyway. I would in
fact use a custom state (AIO = StateT ForeignPtr IO) if I were doing
it; I would hide the constructor so that the only way to alter values
is to call specific function(s) returning filled-in aiocbs as
initialized and passed to aio_read/aio_write, then provide accessors
for the contents (which if necessary can call aio_return, aio_suspend,
or aio_error). Returning from the monad would invoke aio_suspend to
wait for completion or aio_cancel to abort. (Hm. Could be argued
that we want ContT here to represent the two possibilities.)
I note from my local documentation that (a) indeed you must not modify
the aiocb after passing it to aio_read/aio_write and (b) the offset
value should not be read, much less modified, because it could change
during the async I/O (and not in a reliably useful fashion; consider
buffering). And as I said earlier, the exact same memory block (not
merely a copy of it) must be used for the same aiocb.
--
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery at kf8nh.com
system administrator [openafs,heimdal,too many hats] allbery at ece.cmu.edu
electrical and computer engineering, carnegie mellon university KF8NH
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20080728/9991851e/attachment.htm
More information about the Haskell-Cafe
mailing list