| however that there is a Haskell98 implementation of IO regions. The
| solution involves no higher-ranked types, and works both in GHC and
| Hugs. The idea is trivial: given
|
| > newtype Q = Q Handle
| > newtype IOM a = IOM (IO a)
| > qGetChar :: Q -> IOM Char
| > withFile :: FilePath -> (Q -> IOM a) -> IOM a
|
| we wish to assure that the handle Q never escapes, neither explicitly
| nor implicitly.
Don't side effects kill you?
withFile "foo" (\q -> writeIORef var q)
So would unsafePerformIO
withFile "foo" (\q -> return (unsafePerformIO (qGetChar q)))
Simon
_______________________________________________
Haskell mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell