您如何使用功能性编程语言进行事件?

时间:2019-09-04 10:39:35

标签: events functional-programming

我正在尝试为某种流事件发送器提供功能API。举例来说,您有一堆嵌套的动画或(更一般而言)动作。动作形成一棵树。您希望能够监听全局开始和停止的动作,还可以从树中的任何位置暂停/取消/恢复动作。

seq(
  doa(),
  dob(),
  seq(
    dox(),
    doy(),
    doz()
  ),
  doc()
)

因此,在像JavaScript这样的传统编程中,您可以这样做:

var stream = seq(
  doa(),
  dob(),
  seq(
    dox(),
    doy(),
    doz()
  ),
  doc()
)

stream.on('startEntireProcess', console.log)
stream.on('startChildAction', console.log)
stream.on('endChildAction', console.log)
stream.on('endEntireProcess', console.log)

但是在函数式编程中,我不确定您会做什么。

iterate(
  seq(
    doa(),
    dob(),
    seq(
      dox(),
      doy(),
      doz()
    ),
    doc()
  )
)

function iterate(actions) {
  while (next action) {
    action() ... I am lost
  }
}

然后最重要的是,添加取消和继续等!我看不到不添加某种状态并具有副作用的方法。

想知道是否可以解释API在这种情况下的功能范式。

0 个答案:

没有答案