问题标签 [corecursion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
list - 使用变形的列表过滤器
我filter
使用来自recursion-schemes
Hackage 库的变形实现了一个损坏的函数:
该函数不是 : 的忠实实现filter
,xfilter odd [1..5]
但xfilter odd [0,0]
没有。我试图通过使用显式递归来实现“重试”,phi
然后用超态重新实现它,所以我以ana . para
:
这是令人满意的,但我随后尝试在内部明确表达重试phi
并在外部执行它们:
Right
意思是“产生一个新元素”,Left
意思是“用新种子重试”。
的签名phi
开始看起来与专门用于列表的同态的第一个参数非常相似:
([a] -> Either [a] [a]
对[a] -> Prim [a] [a] (Either [a] [a]
)
所以我想知道是否有可能使用同构或其他广义展开来实现过滤,或者ana . para
是我所希望的最好的?
我知道我可以使用折叠,但问题是专门关于展开的。
haskell - 当我给它这个核心递归值时,为什么 :p 在 GHCi 中冻结?
我已经定义了无限列表的无限列表pathCounts
和有限列表的无限列表pathCounts'
:
进入 ghci,如果我根本没有评估任何一个,我可以:p
成功使用任何一个:
但是,如果我部分评估pathCounts'
,然后在仍然成功的同时:p
冻结:pathCounts
pathCounts'
我希望:p pathCounts
打印与 相同的:p pathCounts'
内容,因为我只对其进行了部分评估。为什么它不起作用?
python - Python:在运行时创建生成器
我知道在 python 中可以分别使用 type 和 lambda 在运行时创建类和函数,但是可以在运行时创建生成器吗?
示例:关键字、条件、操作、产量
lambda x,a: a<x,a++,a
isabelle - 定义核心递归树时出现“无效的映射函数”
我正在做我的第一次实验codatatype
,但我很早就被困住了。我从这个分支的定义开始,可能是无限的树:
并且一些定义工作正常:
但这不起作用:
当我收到错误消息时
我可以通过写作来解决它
这让人相信primcorec
需要“了解”函数更新运算符,类似于fun
需要fundef_cong
引理和inductive
需要mono
引理。但究竟是什么?
c++ - 如何在 C++ 中完成 corecursion?
我正在开发一个需要与树结构频繁交互的 C++ 项目,这意味着很多递归函数,我正在寻找改进代码的方法。前几天我遇到了corecursion,我有兴趣为我的应用程序探索这种策略。
但是,我还没有找到任何关于如何使用 C++ 完成 corecursion 的示例。为了具体说明我的问题,如何在 C++ 中使用 corecursion 进行树遍历?
如果这样做只是一个坏主意,请告诉我。也就是说,在互联网上对此有一些答案对于将来尝试这样做的人很有用。没有关于 SO 匹配的问题[c++] corecursion
,互联网的其余部分似乎没有关于该主题的有用信息。
recursion - 生成递归与核心递归
Wikipedia 对递归的讨论表明,生成递归函数“通常可以被解释为核心递归函数”(强调我的),而 Wikipedia 对corecursion的讨论使得这两者听起来像是同义词,当它指出“一些作者将此 [corecursion] 称为生成递归。”
生成递归和核心递归有什么区别?它们是严格的同义词,还是有时生成递归的东西不是核心递归的?
c# - 可从链式任务中观察到
我正在尝试创建一个 Observable,其中每个项目都是通过异步任务生成的。下一项应通过对上一项的结果(共同递归)的异步调用来生成。在“生成”的说法中,这看起来像这样 - 除了生成不支持异步(也不支持初始状态的委托)。
作为更具体的示例,要通过一次获取 100 条消息来查看 ServiceBus 队列中的所有消息,请实现 ProduceFirst、Continue 和 ProduceNext,如下所示:
然后调用.SelectMany(i => i)
把IObservable<IEnumerable<BrokeredMessage>>
它变成一个IObservable<BrokeredMessage>
其中 _serviceBusReceiver 是一个接口的实例,如下所示:
BrokeredMessage 来自https://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.aspx
haskell - (共)递归定义如何在 Haskell 中工作?
我正在玩弄这种语言来开始学习,我对递归定义的工作原理感到困惑。
例如,让我们取三角数的序列 ( TN n = sum [1..n]
)
提供的解决方案是:
到目前为止,一切都很好。
但我确实想出的解决方案是:
这也是正确的。
现在我的问题是:这如何转化为较低级别的实现?当满足这样的递归定义时,幕后究竟会发生什么?
c - How to use corecursion in c?
I need help trying to find where to place the print statements in each function (alpha_count and sum_digits) so that they will only print once (at the end of the program).
Ex.
Number of characters: 8
Sum of digits: 19
As of right now they print each time the function has been called. Any ideas?
isabelle - 意外的核心递归调用
Isabelle 中的这个(修剪掉的)核心递归函数定义
产量
但如果我进一步简化为
有用。
我也尝试使用解构视图,即
现在我收到一条不同的错误消息:Invalid map function at "case undefined of Reg c ⇒ tree Γ v |`| undefined"
.
可能是什么原因?
使用其他case
表达式它可以工作,我没有在文档中找到任何提及限制(数据类型文档中的第 5.1.1 节。)