当前位置: 首页 > 知识库问答 >
问题:

玫瑰树的初始代数

景震博
2023-03-14

据我所知,来自Haskell的递归数据类型对应于Hask类别[1,2]中的内函数的初始代数。例如:

    null
data Rose a = Node a (List (Rose a))
F(A, •, -) = A × (1 + (-) × (•))
data Rose a   = Node a (Forest a)
type Forest a = List (Rose a)

共有1个答案

卫才哲
2023-03-14

正如您所注意到的,RoseA的函数的定义更加复杂,因为类型的递归出现被输入到列表中。问题在于list本身是作为固定点获得的递归类型。List(Rose a)基本上对应于“Rose a的任意数量的元素”,这些元素不能单独用乘积和和的签名来表示,因此需要对这些多个递归点进行额外的抽象。

函数f a-:*->*将不起作用,因为我们需要找到这样的内容

F A X ≃ A × (1 + X × List X)
F A X ≃ A × (1 + X × (1 + X × List X))
F A X ≃ A × (1 + X × (1 + X × (1 + X × List X)))
...

一种方法是将list视为基本元素。则Rose A只是

RoseF A : * -> * = λ X . A × List X
GRose F A ≃ A × F (GRose F A)

但是请注意,GRose仍然是递归的,所以上面所说的实际上是一个同构,而不是我们问题的解决方案。我们可以通过对递归点进行额外的抽象来解决(wink wink)这个问题

HRose G F A = A × F (G F A)

注意,现在hrose((*->*)->(*->*))->(*->*)->(*->*)类型的常规高阶函数,因此它将高阶函数映射为高阶函数。计算hrose的最小不动点给我们

μ(HRose) F A ≃ A × F (μ(HRose) F A)

因此,如果我们将rose️μ(HRose)列表,我们将得到

Rose A ≃ A × List (Rose A)

这正是玫瑰树的定义方程。你可以找到许多关于使用高阶函子上的不动点的泛型程序设计的理论和实践的进一步例子。例如,这里,Bird和Paterson在嵌套数据类型的上下文中开发了它(但定义显然普遍适用)。它们还显示了以这种方式定义的数据类型上的折叠的系统构造,以及各种法律。

 类似资料:
  • 本文向大家介绍情人节快乐! python绘制漂亮玫瑰,包括了情人节快乐! python绘制漂亮玫瑰的使用技巧和注意事项,需要的朋友参考一下 情人节快乐!这个节日怎么会少了浪漫的玫瑰花! 用Python的turtle库绘图是很简单的,画了一个玫瑰花,下面奉上源码: 源码: 效果图: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍Javascript实现一朵从含苞到绽放的玫瑰,包括了Javascript实现一朵从含苞到绽放的玫瑰的使用技巧和注意事项,需要的朋友参考一下 用javascript实现的一朵从含苞到绽放的玫瑰   代码奉献了!! 偷偷地做成网页发给女朋友,她会高兴的! 效果如下: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对呐喊教程的支持。

  • 本文向大家介绍javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码,包括了javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果。分享给大家供大家参考。具体如下: 下面的玫瑰绘制用到了HTML 5的canvas,所以你的

  • 本文向大家介绍情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript),包括了情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,先给大家展示下效果图: 总结,本篇是要介绍的一个刷星星(闪存里面的)的脚本,用于挂机刷星星。在七夕就是刷的玫瑰,所以绝不是标题党,就让我带大家一起刷星星吧! 一、 发送消息

  • 如果是这样,为什么这和由对[0,succ]求值的初始代数1+n->N不一样呢? 原帖 我知道对于自然数,我们有函子F(U)=1+U和初始代数F(U)->U,其中单位为0,n为succ(n)=n+1。对于另一个由函数h求值的代数,其成体性cata为cata(n)=hn(单位)。 但这似乎不是公式cata(n)=hn(单位)。在这一切中,我的错误在哪里?

  • 本文向大家介绍Android中使用Canvas绘制南丁格尔玫瑰图(Nightingale rose diagram),包括了Android中使用Canvas绘制南丁格尔玫瑰图(Nightingale rose diagram)的使用技巧和注意事项,需要的朋友参考一下 南丁格尔玫瑰图 在常规图表中实在很惊艳,但我初看没看懂,一查原来南丁格尔这么伟大,确实值得尊敬。 再仔细研究了下这种图的构成,发现原