> > 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