在「類型和編程語言」中,第6.1.2節中他們討論了用於爲lambda表達式中的自由變量編號的命名上下文。使用他們提供的示例方案,λx.xb
和λx.xx
的de Bruijn表示形式爲λ.00
,如果它們有明顯不同的術語。這個怎麼用?如何使用命名上下文來查找de Bruijn指數的自由變量?
9
A
回答
13
至於你提到書中使用從0
到數字n
自由變量映射到n-1
命名上下文。但是,如果仔細觀察本書中的示例,您會注意到它並不直接使用這些數字來表示變量。例如,它代表了λw. y w
爲λ. 4 0
即使對於y
映射是3,不是4
這裏發生的事情是,他增加了變量數目的嵌套深度。即如果自由變量v
嵌套在d
lambdas中,它將獲得索引Γ(v)+d
,而不僅僅是Γ(v)
。
因此在您的示例中,使用上下文Γ {b -> 0}
λx.xb
將表示爲λ. 0 1
而不是λ. 0 0
。因此沒有歧義。
+0
爲了學習Lambda微積分的工作原理,我創建了一個基於網絡的解釋器(http://pure-fn.appspot.com/about),以獲得更簡單的基於索引的方法。我會很感激你對此的反饋。 – dansalmo 2013-03-22 18:58:34
相關問題
- 1. 在Coldfusion中使用來自動態命名變量的列名
- 2. 如何使用變量來查找數組中的元素?
- 3. 批量重命名文件來自不同的變量
- 4. 使用YAML變量來命名鍵
- 5. 變量命名公約查找和JS
- 6. Coq中的自由變量
- 7. 如何使用變量來命名R中的另一個變量?
- 8. 如何使用C union將多個命名變量和另一個更大的命名變量等同起來?
- 9. De Bruijn LSB的等價物,但是對於MSB
- 10. 如何只使用一行linux命令來查找文件?
- 11. 如何更改Rails路由上的自動命名參數ID?
- 12. 用變量命名變量
- 13. 如何檢查變量或命令是否來自bash或unix?
- 14. 如何傳遞變量來查找名稱選項?
- 15. 如何使用perldoc查找%ENV變量?
- 16. lambda微積分上下文中「自由變量」和「變量的自由出現」之間的區別
- 17. 函數如何使用來自其他函數的變量?
- 18. Table.copy用變量來命名錶
- 19. 使用mysql查找下一個自由整數
- 20. 如何使用SSIS指定變量文件名?
- 21. 嘗試使用一個變量來自不同的查詢命令查詢
- 22. 查找變量名數組中是否不存在文件名
- 23. 如何使用變量作爲函數名來調用python
- 24. Bash:使用find查找文件,用漸進號命名它們
- 25. 如何在Firefox上使用js變量來自Java WebDriver
- 26. 使用的文件名來命名列
- 27. 如何使用來自其他文件的文本命名文件?
- 28. 如何在rspec中的上下文中使用變量
- 29. 正則表達式來重命名指針變量
- 30. 如何指定由通配符包圍的JPA命名參數?
什麼讓你覺得第一個的表示將是'λ.00'。我不認爲第一個可以表示出來,因爲'b'沒有被綁定到任何地方。 – sepp2k 2012-02-26 04:06:49
在我提到的部分中,他們討論瞭如何使用_naming context_表示自由變量。 – sanjoyd 2012-02-26 04:27:05
啊,我明白了。我會盡快寫一個答案。 – sepp2k 2012-02-26 04:42:41