1
A
回答
5
一個這樣的例子可能是這些愚蠢的數據類型。
datatype a = A | Ab of b
and b = B | Ba of a
他們就沒有任何意義,但它們表明,它可以使用and
關鍵字(就像使用功能)來引用一些「超前」,這通常是不可能的
它們是相互(因爲它們都...)遞歸(...相互引用)
2
相互遞歸數據類型的標準基本例子是樹和森林:一個森林樹木的列表,而一棵樹是價值和森林(r的價值oot和子女的子樹)。在標準ML這可以被定義爲,允許空樹:
datatype 'a tree = Empty | Node of 'a * 'a forest
and 'a forest = Nil | Cons of 'a tree * 'a forest
從「Data Types」,在標準ML,由羅伯特·哈珀編程(2000年)。
又如通過產生式規則定義表達式在正式語法,如對於整數的括號的算術表達式如下:
datatype int_exp = plus of int_term * int_term
| minus of int_term * int_term
and int_term = times of int_factor * int_factor
| divide of int_factor * int_factor
| modulo of int_factor * int_factor
and int_factor = int_const of int
| paren of int_exp;
我已在維基百科更新「Mutual recursion」以提供示例(包括標準ML)。
相關問題
- 1. scala中的相互遞歸類型
- 2. C++相互遞歸變體類型
- 3. 相互遞歸數據類型
- 4. 這種相互「遞歸」叫什麼?
- 5. 可能有相互遞歸類嗎?
- 6. 泛型中的「遞歸類型綁定」是什麼意思?
- 7. ANTLR4相互左遞歸
- 8. 模板互相遞歸
- 9. 野牛的相互遞歸
- 10. 相互遞歸Common Lisp中
- 11. AMD遞歸互相模塊
- 12. ANTLR的相互左遞歸
- 13. 相互遞歸問題
- 14. 相互遞歸的實例?
- 15. ocaml相互遞歸錯誤
- 16. 相互左遞歸ANTLR 4
- 17. 相互遞歸定義IO
- 18. F#:相互遞歸函數
- 19. 相互遞歸let綁定
- 20. 推測一個相互遞歸的數據類型家族
- 21. 遞歸和類實例遞歸的區別是什麼
- 22. 什麼時候/爲什麼相互左遞歸在Antlr中發生?
- 23. 在F#/ Scala中優化相互遞歸的標準方法是什麼?
- 24. 什麼是間接遞歸?
- 25. 什麼是遞歸樹?
- 26. 避免在類型類與相互遞歸默認方法的一個錯誤
- 27. z3中的相互遞歸數據類型及其與內置類型的交互
- 28. 遞歸類型Lensing
- 29. 從左遞歸規則中去除相互左遞歸
- 30. 科特林:尾遞歸的相互遞歸函數