【发布时间】:2019-11-11 15:11:47
【问题描述】:
在 Conal Elliot 的 Push-Pull Functional Reactive Programming 中,Reactives 在第 7.1.3 节中被赋予了一个 Monad 实例。如果join 的内部和外部反应同时触发会发生什么?
never :: Event a
MkFuture :: Time -> a -> Future a
pure :: a -> Future a -- at time zero
MkReactive :: a -> Event a -> Reactive a
MkEvent :: Future (Reactive a) -> Event a
join (MkReactive (MkReactive "foo" never) (MkEvent (pure (MkReactive "bar" never)))
"foo" 是否应该被忽略或包含在连接的结果中?
【问题讨论】:
-
这个问题没有意义——
join本质上是在等待第一个Event a到达。由于never(大概)永远不会到达,join永远等待,结果是_|_(底部)。 -
@BobDalgleish
(MkEvent (pure (MkReactive "bar" never)))在零时间触发