gpt4 book ai didi

haskell - 为什么 `changes` 返回 `Event t (Future a)`

转载 作者:行者123 更新时间:2023-12-02 21:25:21 25 4
gpt4 key购买 nike

changes函数的类型为Frameworks t =>Behavior t a -> Moment t (Event t (Future a))Future 是抽象的,只有一个函数使用它 (reactimate')。

但是,我可以轻松编写以下函数:

changes' :: Frameworks t => Behavior t a -> Moment t (Event t a)
changes' b = fmap (fmap const b <@>) (changes b)

获取正常(非Future)事件。

这个函数有问题吗?如果不是,为什么原始的 changes 函数具有更严格的类型?

最佳答案

函数 changes 返回的值与您描述的函数 changes' 不同。关键点如下:

考虑由 stepper(或 accumB)定义的行为,它恰好在时间 t0 发生变化。该行为此时此刻有什么值(value)?答案是,行为在所有严格大于于更改时间t > t0的时间中采用新值,并且它仍然具有其旧值在时间t0。换句话说,changes' 函数返回一个事件,其值是行为更改时的旧值。相反,changes 函数返回新的(“ future ”)值。由于各种原因,与recursion有关,新值被包装在 Future 类型中,以便在 reactimate' 阶段之前无法访问它们。

编辑:托比亚斯画了一张图作为说明:

关于haskell - 为什么 `changes` 返回 `Event t (Future a)`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26980819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com