爲什麼不能將「if-then-else」結構模擬爲支持函數應用的解釋器中的函數? Scheme中的「let」函數類似於「if-then-else」嗎?解釋器,如果聲明並讓
3
A
回答
4
在方案的if
語句如下:
(if <predicate> <consequent> <alternate>)
和定義使得<consequent>
是評估只有當<predicate>
不假,使得<alternate>
是評估只有當<predicate>
是錯誤的。所以你可以看到像
(if #t (display "okay") (shut-down-the-nsa))
永遠不會真正關閉國家安全局。
但是,如果if
是一個函數,如:
(<operator> <operand> …)
那麼每個<operand>
總是被判斷。在if
聲明的上下文中,這意味着將對<consequent>
和<alternate>
進行評估 - 而不是if
。
+0
非常感謝您的幫助。 你能解釋一下關於「let」的功能麼? –
+1
@ sara_123讓我們只是語法糖。 (((x 2)(y 3))(+ x y))與((lambda(x y)(+ x y))2 3)相同,但並不一定以解釋器中的方式實現。 – WorBlux
相關問題
- 1. 有人可以向我解釋「如果讓」聲明是什麼?
- 2. #define聲明解釋
- 3. 解釋ADFS聲明規則
- 4. 解釋外殼聲明
- 5. 我該如何解釋此聲明?
- 6. 如何解釋聲明char * x [5]?
- 7. Python的回報,如果沒有聲明解釋
- 8. 如果聲明讓我難堪
- 9. 如果聲明
- 10. 如果聲明
- 11. 如果聲明
- 12. 解釋函數聲明的語法
- 13. 無法解釋的聲明命令JDBC
- 14. 的Java類聲明的解釋
- 15. 在C中解釋一個聲明#
- 16. 聲明解釋 - (IBAction)changeGreeting:(id)sender; iPhone
- 17. 解釋HRESULT的聲明/定義
- 18. PHP類聲明的解釋需要
- 19. 泛型聲明類型的解釋
- 20. 多,如果在列表解析聲明
- 21. 如果和包含聲明合併
- 22. 的foreach循環,並聲明如果
- 23. PHP:如果聲明變量聲明
- 24. WP:如果聲明
- 25. 如果聲明php
- 26. 如果聲明VBA
- 27. 如果聲明JAVA
- 28. MySQL如果?聲明
- 29. CSS如果聲明?
- 30. JSON如果聲明
你可以實現'if'作爲一個函數,但是如果你這樣做了,你需要編寫'then'和'else'部分函數,以便延遲它們的評估。 –