Haskell 如何处置/释放;定稿;共享值超出范围时的非托管资源
我有一个封装外部资源密钥的类型。一旦密钥丢失(共享它的所有值都超出范围),应该在下一次垃圾收集时(隐式地)释放资源,就像内存对常规值所做的那样 因此,我正在寻找类似于OOP的东西,或者,只是表示对来自外语的对象以外的其他对象的引用(尽管如果我也能正确且优雅地处理这个问题,知道如何回答这个问题) 可能吗?如果是这样的话,怎么做?我建议您看看: ResourceT是一个monad转换器,它创建一个代码区域,其中 您可以安全地分配资源 你可以用这个 不幸的是,弱引用的语义一开始可能有点难以理解。警告说明尤其重要 如果您可以在密钥上附加一个或,并创建一个与之相关联的弱引用/终结器,那么它可能会更加可靠 在特殊情况下,您的密钥是指向非托管内存(例如某些C数据结构)的指针,您应该创建一个并向其附加一个终结器。这些终结器的语义有些不同;终结器必须是指向外部函数的函数指针,而不是任意IO操作Haskell 如何处置/释放;定稿;共享值超出范围时的非托管资源,haskell,garbage-collection,dispose,ghc,finalizer,Haskell,Garbage Collection,Dispose,Ghc,Finalizer,我有一个封装外部资源密钥的类型。一旦密钥丢失(共享它的所有值都超出范围),应该在下一次垃圾收集时(隐式地)释放资源,就像内存对常规值所做的那样 因此,我正在寻找类似于OOP的东西,或者,只是表示对来自外语的对象以外的其他对象的引用(尽管如果我也能正确且优雅地处理这个问题,知道如何回答这个问题) 可能吗?如果是这样的话,怎么做?我建议您看看: ResourceT是一个monad转换器,它创建一个代码区域,其中 您可以安全地分配资源 你可以用这个 不幸的是,弱引用的语义一开始可能有点难以理解。警告说