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