|
Re: Imperative Object Destruction: msg#00041lang.haskell.general
At 2000-11-13 02:18, Hannah Schroeter wrote: >That's the problem. And I think your solution is overly complicated. > >Why not copy what Common Lisp does, just that Haskell can do it without >macros: > >withOpenFile :: FilePath -> IOMode -> (Handle -> IO a) -> IO a >withOpenFile name mode action = do > handle <- openFile name mode > result <- (action handle) `finally` (hClose handle) > return result > >Usage: > >count :: Handle -> IO Int >read :: Handle -> IO [Byte] > > fileLength <- withOpenFile "filename" ReadMode $ \handle -> > count handle > fileContent <- withOpenFile "filename" ReadMode $ \handle -> > read handle Doesn't fulfill condition 2: 2. no read or write operations are performed on file-handles that have not yet been opened, or that have already been closed. ...since you can do stealHandle = withOpenFile "filename" ReadMode (\handle -> handle) stealHandle >>= read -- Ashley Yakeley, Seattle WA |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: Imperative Object Destruction: 00041, Hannah Schroeter |
|---|---|
| Next by Date: | RE: Imperative Object Destruction: 00041, Ashley Yakeley |
| Previous by Thread: | Re: Imperative Object Destructioni: 00041, Hannah Schroeter |
| Next by Thread: | Re: Imperative Object Destruction: 00041, Hannah Schroeter |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |