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