Conal Elliott在这里谈论Streams和Comonads:http://conal.net/blog/posts/sequences-streams-and-segments
然而,他没有直接提到行为。所以..。行为是Comonad吗?如果是的话,那实际上是什么意思?
对于初学者-我认为Behavior可以提供extend和extract函数。我认为工作的唯一方式是它在特定时刻对值进行采样。
这就是Comonad对行为的意义吗?它允许人们“分叉和冻结”一种行为?
换句话说,如果我们有一个行为,随着时间的推移具有这些值:A,B,C,D,...,我们可以在它为B的时候对其进行extend,并获得一个无限期包含B的新行为(这很有用-因为我们可以lift或map它,依此类推)。
发布于 2018-08-24 01:03:58
Behavior a与(Time -> a)同构。在那篇文章“添加连续性”一节中,锥体给出的定义与comonad package中的定义一致。
对我来说,如何让时间成为Monoid并不明显。有几个Monoid实例是可能的,但是有什么有用的吗?科纳尔在future values上的帖子表明,Max是一个与时间打交道的有用的Monoid。
这就是说,extract @Behavior在尽可能早的时候给出值,duplicate @Behavior在两个时间中较晚的时候给出值。我可以看到这两个都是有用的。也许还有其他有用的Monoid?
https://stackoverflow.com/questions/51979438
复制相似问题