>
> From: Florian Weimer <f...@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
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to