簡體   English   中英

聲明組在上下文單態限制中是什么意思?

[英]What does declaration group mean in context monomorphism restriction?

我試圖借助什么是單態限制?來理解單態限制。 但不理解報告第4.5.1節要解釋的內容。

聲明組是相互依賴的綁定的最小集合。

聲明組到底是什么? 有人可以提供例子嗎?

想象一個程序

foo x =
   let f n = g (n-1)
       g n = f (n-2)
       h n = 42*n
   in
      f (h x)

在這里, fg形成相互依賴的綁定的最小集合。

他們不依賴於h ,也沒有h依賴於任何人。 因此我們可以將其重寫為

foo x =
  let  h n = 42*n    in
    let f n = g (n-1)
        g n = f (n-2)
    in
       f (h x)

但是我們無法分解fg的組-它們必須在一起,因為它們每個都指向另一個。

在這里, fg綁定都是函數綁定,因此不受限制 ,但是如果我們在那里有g = \\n -> f (n-2) ,則意味着g的綁定是簡單的模式綁定,並且兩者 f a g將受到單態性限制。

我們可以說h, f, g是一組綁定,但這並不是最小的,因為我們可以將h從該組中刪除。 只有當我們不再拿出任何名稱時,我們才有了最小(即最小的大小)組。 因此,如果我們重寫g = \\n -> f (n-2) ,則即使f的bindind為a, g仍將成為簡單的模式綁定,受到限制,並且f將受到限制。功能綁定。 但是h仍然不受影響。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM