繁体   English   中英

为什么线性数组的类型签名与普通数组相比会发生变化?

[英]Why does the type signature of linear array change compared to normal array?

我将通过A Taste of Linear Logic中的一个示例。

它首先介绍了定义了常用操作的标准数组(第 24 页):

标准数组

然后建议线性等价物(对类型签名使用线性逻辑来限制数组复制)将具有稍微不同的类型签名:

线性当量

其设计理念是数组包含的值复制起来很便宜,但数组本身复制起来很昂贵,因此应该作为句柄从一个用途传递到另一个用途。

问题:查找和更新的签名与标准签名很好地对应,但是我如何解释新的签名?

尤其:

  • function new 好像没有返回数组。 如果没有提供数组,我如何才能使用它?
  • 我想我明白Arr –o Arr x X不能使用线性逻辑推导,因此需要 function 来提取单个值而不使用数组,但我不明白为什么 new 不直接提供 function

实际上,这与垃圾收集有关。

线性逻辑避免复制以及留下未使用的值。 因此,当您使用new创建数组时,您还需要确保它最终再次被清理。

你怎么能确保它被清理干净了? 好吧,在这个例子中,他们通过不返回数组作为结果来做到这一点,而是将它“借”给调用者。 function ArrArrX除了您真正感兴趣的结果之外,最后还必须返回一个数组。假设这将是您开始使用的数组的修改形式。 只有X被传递回调用者, Arr被释放。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM