programming-languages - `occs` 应该可供程序员使用吗?

标签 programming-languages functional-programming monads frp

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

  • 通话时发生的已知事件
  • 自动与事件本身保持同步的数组/列表

当然,这两种方法看起来都有点难看 - 一种破坏了语义纯度,另一种则涉及副作用。

简单地删除 FRP 框架本身之外的 occs 函数(即,将其设为 Event 及其扩展的任何内容的私有(private)函数)是否会更好?只要事件具有返回进一步事件的映射、过滤、合并等功能,我觉得它可能会毫无问题地丢失。或者,我误解了什么?

最佳答案

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

关于programming-languages - `occs` 应该可供程序员使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9280347/

相关文章:

programming-languages - .ac 扩展名是指什么?

c - 怀疑在printf中使用*++p

java - 警告 : A generic array of Object&Serializable&Comparable<? > 是为可变参数创建的

file-io - 唯一基本情况是异常的递归表达式 [Context : Reading from files in OCaml]

haskell - 这种自由(更自由?)单子(monad)的构造有效吗?

programming-languages - 为什么有些语言要求在调用之前在代码中声明函数?

javascript - 数组的高效映射

haskell - 如何向此 monad 转换器添加列表或 List?

haskell - monad 中的纯映射

python - 将 "grows"表的命令式算法转换为纯函数