7
A
回答
13
簡化語義學是一種計算技術,它涉及到用等效(有希望更小)的表達式代替表達式,直到不再有可能的替換。如果一種語言是圖靈完備的,那麼表達式永遠不會停止替換。
還原通常是通過一個右箭頭記譜,並且它最好通過實例說明:
(3 + 7) + 5 --> 10 + 5 --> 15
此示出了用於算術表達式標準還原語義。表達式15
不能再減少。
希望這會有所幫助。
4
約簡語義與上下文語義相似(如果不是相同?)。任何表達式都可以分解爲一個上下文並進行redex。
羅伯特哈珀的編程語言實踐基礎(草案PDF可用here)第9.3節語境語義學做了一個體面的工作來解釋它們。
一個例子:
print 5+4
**context: print [], redex: 5+4
**evaluate redex: 9
**plug back into context
print 9
**context: [], redex: print 9
**evaluate redex: nil ==> 9
**plug back into context
nil
你可以用「杖」的歸約回上下文的「洞」來獲得:打印5 + 4。評估發生在redex。您將表達式分解爲上下文+ redex,評估redex以獲取新表達式,將其插回到上下文中,然後再重複。
這裏的一個稍微複雜的實施例,需要一個抽象機,用於評估演算的知識:
(lambda x.x+1) 5
**context: [] 5, redex: (lambda x.x+1)
**evaluate redex: <(lambda x.x+1), {environment}> <- create a closure
**plug back into context
<(lambda x.x+1), {}> 5
**context: [], redex: <(lambda x.x+1), {}> 5
**evaluate redex: x+1 where x:=5
**plug back into context
x+1 where x:=5
**context: []+1, redex: x
**evaluate redex: 5 (since x:=5 in our environment)
*plug back into context
5+1...
6
編輯:棘手的部分是識別其中打破的表達到上下文&歸約式。它需要知道該語言的操作語義(下一步需要評估的表達式)。
相關問題
- 1. 有人能請外行解釋什麼是功能語言?
- 2. PLT Redex:參數化語言定義
- 3. 這個PHP語法在外行人中的含義是什麼?
- 4. 什麼是WCS?請解釋
- 5. 爲什麼PLT除了GOT之外還存在,而不僅僅是使用GOT?
- 6. 請有人可以在初學者的語言中解釋什麼是LD_LIBRARY_PATH(unix)?
- 7. plt-redex:捕獲 - 免費替代?
- 8. mysql解釋輸出中語句順序的意義是什麼?
- 9. 有人可以請解釋這部分代碼的含義是什麼? setEmployeeNumber(num)
- 10. 語法解釋請
- 11. @plt是什麼意思?
- 12. 什麼是下面的語句解釋
- 13. Git恢復還原還是什麼?
- 14. ETL是解釋還是編譯語言
- 15. 針對開發人員推薦的語義Web reasoners是什麼?
- 16. 請解釋%w是什麼意思
- 17. 使用還原反應的原因是什麼?
- 18. 有人可以解釋這行代碼是做什麼的?
- 19. 如何在PLT Redex中實現等遞歸類型?
- 20. 解釋`core.reducers`圖書館的外行人
- 21. 請解釋一下這個寫作在例子中的含義是什麼?
- 22. 斯坦福CorenNLP短語POS標籤和詞形還原解釋
- 23. php是編譯語言還是解釋語言?
- 24. 有人可以解釋這些if語句在說什麼嗎?
- 25. 有人可以請外行解釋問與問並列嗎?
- 26. 有人可以請解釋下面的代碼做什麼?
- 27. ELF Dissasembly - 「.init .text .plt」是什麼意思?
- 28. 這是什麼解釋?
- 29. 有人可以請解釋這一行
- 30. 在mysql中解釋更高的行數是好還是不好?
另請參閱redex網站(redex.plt-scheme.org)和最近出版的書(「使用PLT Redex進行語義工程」)。 – 2009-07-29 18:01:17