Hello Wolfgang, Saturday, July 09, 2005, 7:01:06 PM, you wrote:
>> > As part of my diploma thesis, I'm working on a small collection of modules >> > which provides safe I/O interleaving. The key point is to split the state >> > of the world since I/O on different parts of the world can be interleaved >> > arbitrarily. If someone is interested, I can post more details. >> >> yes, i am interested. i feel that this would be very interesting and useful >> for real programs WJ> the idea is to have different monads for I/O on different resources. A simple WJ> example is to have the two monads WorldIO and FileIO and a type FileIOHandle. WJ> A file is a part of the world. You have the following functions: WJ> readChar :: FileIO Char WJ> writeChar :: Char -> FileIO () WJ> runFileIO :: FilePath -> FileIO a -> WorldIO (a, FileIOHandle) WJ> finishFileIO :: FileIOHandle -> WorldIO () WJ> readChar and writeChar should be self-explanatory. At first, runFileIO does WJ> nothing instead of opening the file and returning the result. Whenever parts WJ> of the first component of the result pair are evaluated, as much readChar and WJ> writeChar actions of the file I/O action are executed as are needed to WJ> produce the desired parts of the result. finishFileIO executes the remainder WJ> of the file I/O and closes the file afterwards. sorry, it is probably not what i'm think about. as i can see, you are provide safe equivalent of interleaveIO, while i'm think about approach that simplifies creating of I/O and mutable-state programs, something like: string <- [readChar h, readChar h] which automatically perform I/O actions `readChar h` in I/O monad and then uses their results as in ordinal computation. this will allow "do" syntax to more close imitate imperative languages -- Best regards, Bulat mailto:[EMAIL PROTECTED] _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell