【发布时间】:2012-02-14 16:19:17
【问题描述】:
在阅读和实现 FRP 时,我对 Event 上的 occs 函数的语义感到困惑(参见 Conal Elliott 的论文)。处理静态(纯)事件时非常简单,但我不明白它如何处理动态事件(例如鼠标按钮按下等)。例如,如果occs 返回所有事件的发生,那么据我所知,occs 的动态事件的结果可能是以下情况之一(因为并非所有事件都是已知的):
- 调用时的已知事件
- 自动与事件本身保持同步的数组/列表
当然,这两个看起来都有些难看——一个破坏了语义纯度,另一个涉及副作用。
将occs 函数简单地从FRP 框架本身之外移除会更好吗(即使其对Event 和任何扩展它的东西都是私有的)?只要 Event 具有返回更多事件的映射、过滤、合并等功能,我觉得它可以毫无问题地丢失。或者,我是不是误会了什么?
【问题讨论】:
-
请不要投反对票,然后不要解释原因。真的没用。
标签: programming-languages functional-programming monads frp