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. C#自定义属性属性反射
- 4. 反应性和rhandsontable
- 5. 在“实数”上找到非反对称和非传递关系
- 6. 反射,属性和属性选择
- 7. 接口,属性和反射
- 8. 反射和多态性
- 9. 反射和复杂属性
- 10. Tinymce自定义标签传递属性
- 11. 问题与反射器和自动属性
- 12. 给出二元关系R.在LISP中构造传递和反射闭包R *
- 13. C# - 递归/反射属性值
- 14. 自反散列?
- 15. 通过反射包含属性
- 16. C#从参数传递/检索属性名称而不反射
- 17. 作为属性传递的绑定函数反射
- 18. 将反应组件的属性传递给rails后端
- 19. 多态性遗传与反思
- 20. MySQL的自反/递推关系
- 21. Javascript属性反射
- 22. 反身性保护
- 23. 在自定义属性中传递自定义参数 - ASP.NET MVC
- 24. 传递自定义参数反应路由器的OnEnter功能
- 25. 将2个反应性属性组合成具有反应性绑定的反应性命令
- 26. 来自Facebook和跨域消息传递的安全性错误
- 27. 反应 - 传递(this)onClick?
- 28. 反应-tagsinput和反应,自动提示和ES5
- 29. Python反向自省
- 30. Java自我反思