1
A
回答
2
的非自反傳遞閉包操作者是^
。 foo.^bar
是關於bar
的非自反傳遞封閉的foo
。通過將.bar
應用於foo
一次或多次,這將返回您可以生成的所有東西的集合。例如,foo.^bar
等於下列用語的工會:
foo.bar
foo.bar.bar
foo.bar.bar.bar
foo.bar.bar.bar.bar
...
這份名單是無限的。
反身傳遞封閉運營商是*
。 foo.*bar
是自反傳遞封閉的foo
相對於bar
。這將返回您可以生成的所有東西的集合,將.bar
應用於foo
零次或多次。例如,foo.*bar
等於下列用語的工會:
foo
foo.bar
foo.bar.bar
foo.bar.bar.bar
...
這份名單也是無限的。這相當於foo + foo.^bar
0
兩個transitive closure
(^
)和reflexive transitive closure
(*
)是一元運算符其可僅被應用到操作數是二元關係。
bar
的
傳遞閉包是被定義爲一個二元關係bar
的
^bar = bar + bar.bar + bar.bar.bar + ...
自反傳遞閉包一個二元關係被定義爲
*bar = iden + ^bar
一個二元關係,其中iden
是單位二元關係。
兩個傳遞閉包操作符的最常見的使用模式是它在前面是關係連接時,如@LEJ提供的示例中的那樣:foo.^bar
和foo.*bar
。值得注意的是,在.^
和.*
中沒有任何魔術:點運算符(.
)是舊的關係連接,並且^
和*
運算符是上面定義的閉包運算符。所以,如果你的工作方程式,你將在同一表達式爲到達和foo.^bar
這foo.*bar
已經@LEJ提供:
foo.^bar = foo.(^bar) = foo.(bar + bar.bar + ...) = foo.bar + foo.bar.bar + ...
foo.*bar = foo.(*bar) = foo.(iden + bar + bar.bar + ...) = foo + foo.bar + foo.bar.bar + ...
相關問題
- 1. 傳遞和反向特性
- 2. 自反閉
- 3. 將非反應性文庫包裝到反應包裝
- 4. C#自定義屬性屬性反射
- 5. 你稱之爲傳遞性和反身性的關係
- 6. 與傳遞閉包(可達性和生產率非終端)更換遞歸
- 7. 緩存反映屬性和C#中的自定義屬性
- 8. 傳遞參數和自定義屬性
- 9. 反應性和rhandsontable
- 10. 在「實數」上找到非反對稱和非傳遞關係
- 11. 反應性,隔離性和清單
- 12. 反射,屬性和屬性選擇
- 13. R Shiny:非反應性文本輸出
- 14. 接口,屬性和反射
- 15. 反射和多態性
- 16. DOM屬性和反應
- 17. 反射性能和界面
- 18. 反射和複雜屬性
- 19. 問題與反射器和自動屬性
- 20. 反射性能
- 21. Tinymce自定義標籤傳遞屬性
- 22. 給出二元關係R.在LISP中構造傳遞和反射閉包R *
- 23. C# - 遞歸/反射屬性值
- 24. 自反散列?
- 25. 自反協會
- 26. 通過反射包含屬性
- 27. 作爲屬性傳遞的綁定函數反射
- 28. C#從參數傳遞/檢索屬性名稱而不反射
- 29. 將反應組件的屬性傳遞給rails後端
- 30. 將屬性從反射傳遞到表達式