gpt4 book ai didi

haskell - 我们关心 FRP 中的 'past' 吗?

转载 作者:行者123 更新时间:2023-12-03 12:16:00 24 4
gpt4 key购买 nike

在玩弄实现 FRP 时,我发现一件令人困惑的事情是
与过去做些什么?基本上,我的理解是我可以在任何时候使用 Behavior 来做到这一点:

beh.at(x) // where time x < now

在这样的情况下,这似乎在性能方面可能会出现问题:
val beh = Stepper(0, event) // stepwise behaviour

在这里我们可以看到,要评估过去的行为,我们需要保留所有事件,并且每次采样时最终都会执行(最坏的情况下)线性扫描。

我们是否希望这种能力可用,或者应该只允许一次评估行为 >= 现在?我们甚至想公开 at对程序员的作用?

最佳答案

虽然行为被认为是时间的函数,但依赖 FRP 中任意数量的过去数据是一件坏事,被称为时间泄漏。也就是说,行为的转换通常应该是流式的/响应式(Reactive)的,因为它们不依赖于超过有限数量的过去(并且应该明确地积累这种历史知识)。

所以,不,at在真正的 FRP 系统中是不可取的:既不能看到过去也不能看到 future 。 (如果 future 的状态取决于 FRP 系统之外的任何东西,后者当然是不可能的。)

当然,这会导致一个问题,即只能查看确切的现在严重限制了您在编写转换行为的函数时可以做的事情:Behaviour a -> Behaviour ba -> b 相同,这使得很多我们想做的事情变得不可能。但这更多是寻找语义的问题,这是 FRP 的持久问题之一,而不是其他任何事情。只要您提供的对行为的原始转换足够强大而不会导致时间泄漏,一切都应该没问题。有关这方面的更多信息,请参阅 Garbage collecting the semantics of FRP .

关于haskell - 我们关心 FRP 中的 'past' 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9526836/

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