Bug in touchForeignPtr?

Benjamin Franksen benjamin.franksen at bessy.de
Mon Nov 22 13:25:01 EST 2004


On Monday 22 November 2004 18:55, Sven Panne wrote:
> Abraham Egnor wrote:
> > I've found that when writing an interface to a C library that requires
> > resource management, it's much better to use the withX (see
> > Control.Exception.bracket) style of function than to use finalizers -
> > programs are much easier to reason about and debug.
>
> ... and have a much more deterministic behaviour regarding resource
> consumption. This is a very important point which is often forgotten.

Ok, the 'withX' pattern solves both of the problems I mentioned and in 
addition is more deterministic (and, using bracket, also exception safe). 
Maybe I should use it instead of finalizers. However, I wonder if it is 
general enough to be the only method exported from a library. I doubt it, 
otherwise there would be no 'openFile' and 'hClose' in System.IO but only a 
'withFile'.

Do you recommend supplying 'newX' and 'freeX' in addition to 'withX'?

Or should I rather use 'newX' plus finalizers for those (rare?) cases where 
'withX' is not general enough?

Ben
-- 
Top level things with identity are evil.	-- Lennart Augustsson


More information about the Glasgow-haskell-users mailing list