当共享值超出范围时,如何处置/释放/"完成"非托管资源

Mas*_*tic 4 garbage-collection haskell dispose finalizer ghc

我有一个类型封装外部资源的键.一旦密钥丢失(共享它的所有值都超出范围),资源应该(隐式地)在下一个垃圾收集中释放,就像内存对常规值一样.

所以我正在寻找类似于OOP处理的东西,或者ForeignPtr,我只代表对外语对象的引用(尽管如果ForeignPtr能够正确和优雅地为此工作,知道如何也回答这个问题).

可能吗?如果是这样,怎么样?

sin*_*law 5

我建议你看看ResourceT:

ResourceT是一个monad转换器,它创建一个代码区域,您可以在其中安全地分配资源.