在阅读和实现 FRP 时,我occs
对 Event 函数的语义感到困惑(在 Conal Elliott 的论文中提到)。处理静态(纯)事件时非常简单,但我不明白它如何处理动态事件(例如鼠标按钮按下等)。例如,如果occs
返回事件的所有事件,那么据我所知,occs
动态事件的结果可能是以下情况之一(因为并非所有事件都是已知的):
- 通话时的已知事件
- 自动与事件本身保持同步的数组/列表
当然,这两个看起来都有些难看——一个破坏了语义纯度,另一个涉及副作用。
简单地删除 FRP 框架本身之外的函数会更好吗occs
(即,使其对 Event 和任何扩展它的东西都是私有的)?只要事件具有返回更多事件的映射、过滤、合并等功能,我觉得它可以毫无问题地丢失。或者,我是不是误会了什么?