Haskell 行为是一种行为吗?

Haskell 行为是一种行为吗?,haskell,frp,purescript,category-theory,Haskell,Frp,Purescript,Category Theory,Conal Elliott在这里谈到了溪流和科摩纳德: 然而,他没有直接提到行为。所以行为是一种共形物吗?如果是的话,这实际上意味着什么 首先,我认为行为可以提供extend和extract函数。我认为工作的唯一方式是在特定的时间点对值进行采样 这就是科摩纳德对行为的意义吗?它允许一个人“分叉并冻结”一种行为 换句话说,如果我们的行为随着时间的推移具有这些值:a,B,C,D,,我们可以在B的时候扩展它,并得到一个新的行为,它无限期地包含B(这很有用,因为我们可以提升或映射它等等)行为a与(时间-

Conal Elliott在这里谈到了溪流和科摩纳德:

然而,他没有直接提到行为。所以行为是一种共形物吗?如果是的话,这实际上意味着什么

首先,我认为行为可以提供
extend
extract
函数。我认为工作的唯一方式是在特定的时间点对值进行采样

这就是科摩纳德对行为的意义吗?它允许一个人“分叉并冻结”一种行为


换句话说,如果我们的行为随着时间的推移具有这些值:
a,B,C,D,
,我们可以
B
的时候扩展它,并得到一个新的行为,它无限期地包含
B
(这很有用,因为我们可以
提升
映射它等等)
行为a
(时间->a)
同构。Conal在文章“增加连续性”一节中给出的定义与

对于我来说,如何使时间成为幺半群并不明显。几个幺半群实例是可能的,但有什么有用的吗?Conal在上的帖子表明,
Max
是一个有用的处理时间的幺半群


这计算出,
extract@Behavior
在尽可能早的时间给出值,
duplicate@Behavior
在两次中较晚的时间给出值。我认为这两种方法都很有用。也许还有其他有用的幺半群?

如果结果取决于调用的时间,这听起来不像是一个纯函数非常好DIt是纯粹的,因为时间是纯粹的价值。当
now
IO
monad中时,过去或未来的某个特定时间是一个纯值。@BobDalgleish但我们不会将时间作为argument@Bergi请阅读本手册第2节<代码>行为a
表示
时间->a
,即
行为
可以在任何时间取样,并且对
行为
取样没有副作用<代码>时间->a
是一个模型,不是实际的实现,但它告诉您很多关于行为的组成。
时间由框架隐式处理的事实不会改变模型,就像使用解析器组合器库来处理剩余和回溯不会改变
String->[(a,String)]
模型一样。