реактивный банан: событие обжига, которое содержит самую актуальную ценность поведения

Предположим, у меня есть событиеспусковой крючок что я хочу сделать две вещи, когда уволены. Во-первых, я хочу обновить значение некоторыхповедение, Во-вторых, если будут выполнены другие условия, я хочу, чтобы это вызвало другое событиеотослать собновленный ценность поведения. Выражается в форме кода, предположим, у меня есть

trigger :: Event b
trigger = ...

updateFromTrigger :: b -> (a -> a)
updateFromTrigger = ...

conditionFromTrigger :: b -> Bool
conditionFromTrigger = ...

behavior :: Behavior a
behavior = accumB initial_value (updateFromTrigger <
trigger :: Event b
trigger = ...

updateFromTrigger :: b -> (a -> a)
updateFromTrigger = ...

conditionFromTrigger :: b -> Bool
conditionFromTrigger = ...

behavior :: Behavior a
behavior = accumB initial_value (updateFromTrigger <$> trigger)

send_off :: Event a
send_off = ?????? (filterE conditionFromTrigger trigger)
gt; trigger) send_off :: Event a send_off = ?????? (filterE conditionFromTrigger trigger)

Тогда возникает вопрос: что мне положить в ?????? так чтоотослать отправляет самую актуальную стоимостьповедениеЯ имею в виду, что значение, которое включает в себя обновление отспусковой крючок это было только применено к этому.

К сожалению, если я правильно понимаю, семантика Поведения такова, что обновленное значение не сразу доступно для меня, поэтому мой единственный вариант здесь - по сути дублировать работу и пересчитать обновленное значение поведения, чтобы я мог использовать его немедленно в другом случае, т. е. для заполнения ?????? с чем-то вроде

send_off =
    flip updateFromTrigger
    <
send_off =
    flip updateFromTrigger
    <$>
    behavior
    <@>
    filterE conditionFromTrigger trigger
gt; behavior <@> filterE conditionFromTrigger trigger

Теперь есть смысл, в котором яМожно сделать обновленную информацию в поведении доступной для меня сразу же, используя Discrete вместо Behavior, но на самом деле это равносильно предоставлению мне события, которое запускается одновременно с моим исходным событием с обновленным значением, и если я не пропустил что-то реактивное-банан не дает мне возможности запустить событие, только когда два других события сработали одновременно; то есть он обеспечивает объединения событий, но не пересечений.

Итак, у меня есть два вопроса. Во-первых, верно ли мое понимание этой ситуации, и, в частности, я прав в заключении, что мое решение выше - единственный способ обойти это? Во-вторых, чисто из любопытства, были ли у разработчиков какие-либо мысли или планы о том, как бороться с пересечениями событий?

Ответы на вопрос(1)

Ваш ответ на вопрос