Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Common lisp 公共Lisp弱引用?_Common Lisp_Weak References - Fatal编程技术网

Common lisp 公共Lisp弱引用?

Common lisp 公共Lisp弱引用?,common-lisp,weak-references,Common Lisp,Weak References,是否有一种可移植(跨实现)的方法来创建CL中的弱引用? 如果不是,我应该使用什么替代方法来避免由于订阅事件而保持活动状态的不需要的侦听器导致的内存泄漏? 在我的特殊情况下,所述侦听器用于实现功能性反应节点(即无副作用,仅对其存储值有用),因此手动取消订阅将非常不雅观。弱引用未被ANSI标准化,尽管大多数实现都有创建弱引用的方法,提供的抽象是不同的。例如,CMUCL、CLISP和SBCL都提供弱引用(“弱指针”),而Franz有弱向量,Clozure有弱值哈希表 有些库声称为一系列实现中的弱指针提

是否有一种可移植(跨实现)的方法来创建CL中的弱引用? 如果不是,我应该使用什么替代方法来避免由于订阅事件而保持活动状态的不需要的侦听器导致的内存泄漏?
在我的特殊情况下,所述侦听器用于实现功能性反应节点(即无副作用,仅对其存储值有用),因此手动取消订阅将非常不雅观。

弱引用未被ANSI标准化,尽管大多数实现都有创建弱引用的方法,提供的抽象是不同的。例如,CMUCL、CLISP和SBCL都提供弱引用(“弱指针”),而Franz有弱向量,Clozure有弱值哈希表


有些库声称为一系列实现中的弱指针提供了一个可移植接口。我不知道它们有多好。

也许这是一个有趣的问题,但堆栈溢出的主题是:“要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于堆栈溢出来说是离题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决问题所做的工作。“您可以尝试在comp.lang.lisp、lispforum网站或#lisp上提问。@JoshuaTaylor,我认为他的问题相当清楚——他正在编写反应式代码,他的处理程序正在阻止他的节点被垃圾收集。简单的解决方法是使用弱引用,他正在询问如何将它们编写成可移植的。@jch是的,这并不特别清楚。正如我提到的,它实际上可以归结为一个库请求,虽然库请求在更广泛的意义上是有用的,但它们并不适合堆栈溢出。评估一个答案是对还是错要困难得多;有很多潜在的答案;答案变得过时是一个严重的问题。