![]() |
1
14
实际上,玫瑰树可以被视为类型和函数的内函子的不动点,我们最好称之为内函子
...那么我们可以
现在,当我们到达第二个不动点时,我们有了一个类型公式
这在两个方面都是功能性的(实际上,严格地说是正的)
上述定义
不是一个类型良好的约束,这很遗憾,因为直觉上,玫瑰树在它们存储的元素中应该是函数的。
你可以通过构建
This answer
类型为
关闭
在函子构造的不动点下。也就是说,工作不在
|
![]() |
2
6
这并不是你要问的问题的答案,但无论如何可能很有趣。请注意
(等式实际上表示同构)。所以你最好定义一下
或者在哈斯克尔,
|
![]() |
3
2
函子
一种方法就是治疗
但是请注意,GRose仍然是递归的,因此上面实际上是在说明同构,而不是问题的解决方案。我们可以尝试通过在递归点上额外抽象来修复(wink-wink)
这正是玫瑰树的定义方程。 Here 例如,Bird和Paterson在嵌套数据类型的上下文中开发了它(但定义显然在一般情况下适用)。它们还显示了以这种方式定义的数据类型上的折叠的系统构造,以及各种定律。 |
![]() |
4
1
你似乎理解这是如何建模的
通过获取,对于任何给定
如果我们忘记了中的态射
对于任何
这是一个通过合成得到的函子
|
![]() |
Kristóf Marussy · 棱柱体或仿射遍历的对偶是什么? 7 年前 |
![]() |
softshipper · 分解器的简单定义 7 年前 |
![]() |
hgiesel · Haskell的Edward Kmetts包概述 7 年前 |
![]() |
softshipper · 我违反抽象法则了吗? 7 年前 |
![]() |
Dan OneaÈÄ · 玫瑰树的初始代数 7 年前 |