[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