【问题标题】:Should `occs` be available to the programmer?程序员应该可以使用 occs 吗?
【发布时间】:2012-02-14 16:19:17
【问题描述】:

在阅读和实现 FRP 时,我对 Event 上的 occs 函数的语义感到困惑(参见 Conal Elliott 的论文)。处理静态(纯)事件时非常简单,但我不明白它如何处理动态事件(例如鼠标按钮按下等)。例如,如果occs 返回所有事件的发生,那么据我所知,occs 的动态事件的结果可能是以下情况之一(因为并非所有事件都是已知的):

  • 调用时的已知事件
  • 自动与事件本身保持同步的数组/列表

当然,这两个看起来都有些难看——一个破坏了语义纯度,另一个涉及副作用。

occs 函数简单地从FRP 框架本身之外移除会更好吗(即使其对Event 和任何扩展它的东西都是私有的)?只要 Event 具有返回更多事件的映射、过滤、合并等功能,我觉得它可以毫无问题地丢失。或者,我是不是误会了什么?

【问题讨论】:

  • 请不要投反对票,然后不要解释原因。真的没用。

标签: programming-languages functional-programming monads frp


【解决方案1】:

据我了解,Conal's paper 中提到的occs 函数不是 API 的一部分。相反,它是编程模型的规范。 Conal 使用它来描述各种组合器的语义,但它不是您可以或应该实现的东西。

【讨论】:

  • 我原以为可能是这种情况,但我真的想找人核实一下。谢谢海因里希!
猜你喜欢
  • 2010-12-30
  • 2011-12-28
  • 1970-01-01
  • 2010-10-01
  • 2021-01-11
  • 1970-01-01
  • 2011-06-05
  • 2014-05-17
相关资源
最近更新 更多