В статье Конала Эллиотта Событие определяется как
type Event a = [(T , a)] -- for non-decreasing times
Это позволит более одного события за раз. В моей библиотеке FRP я хотел бы реализовать функцию:
sample :: Reactive a -> Future () -> Future a
Это будет пробовать реактивное, когда будущее срабатывает. Поскольку реактив может иметь более одного значения в момент, когда срабатывает будущее, как мне его реализовать? Всегда использовать последний, первый или непустой список?
Вот как должна вести себя эталонная функция:
sample
(MkReactive "a"
(MkEvent
(MkFuture 2
(MkReactive "b" ...)
)
)
(MkFuture 1 ())
= MkFuture 1 "a"