[Haskell-cafe] Bulletproof resource management

John Lato jwlato at gmail.com
Mon Oct 18 05:19:31 EDT 2010

> From: Florian Weimer <fw at deneb.enyo.de>
> * Henning Thielemann:
> > Some open/close pairs have corresponding 'with' functions, that are
> > implemented using Exception.bracket. You can also use them within
> > GHCi. I think using both manual resource deallocation and finalizers
> > makes everything more complicated and more unreliable.
> It seems that Exception.bracket does not work in all cases, see the
> recent "MonadCatchIO, finally and the error monad" thread.
> Anyway, the ability of closures (and threads) means that something
> like Exception.bracket does not prevent access to closed handles, so
> I still need an additional safety net.

Enumeration-based interfaces will prevent access to closed handles[1], [2],
etc.  You can use this style for more than just handles and sockets, e.g.
Takusen uses it for database connections.

I think somebody else already mentioned region-based management, which is
also completely safe AFAIK.

[1] http://hackage.haskell.org/package/iteratee
[2] http://hackage.haskell.org/package/enumerator
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20101018/e9005867/attachment.html

More information about the Haskell-Cafe mailing list