Предположим, у меня есть событие триггер , которое я хочу сделать при срабатывании двух вещей.Во-первых, я хочу обновить значение некоторого поведения .Во-вторых, если выполняются другие условия, я хочу, чтобы оно вызвало другое событие send_off с обновленным значением поведения *.Выражается в виде кода, предположим, у меня есть
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)
Тогда вопрос: что я положу в ??????так что send_off отправляет самое актуальное значение поведения , под которым я подразумеваю то значение, которое включает в себя обновление из триггера , которое только что было применено к нему.
К сожалению, если я правильно понимаю, семантика Поведения такова, что обновленное значение не сразу доступно для меня, поэтому мой единственный вариант здесь - по сути дублировать работу и пересчитать обновленное значение поведения.так что я могу использовать его сразу в другом событии, то есть для заполнения ??????с чем-то вроде
send_off =
flip updateFromTrigger
<$>
behavior
<@>
filterE conditionFromTrigger trigger
Теперь, в некотором смысле, я могу сделать обновленную информацию в поведении доступной мне сразу, используя дискретный вместо поведения, нона самом деле это равносильно предоставлению мне события, которое запускается одновременно с моим исходным событием с обновленным значением, и, если я не пропустил что-то реактивное, банан не дает мне возможность запустить событие, только когда сработали два других событияодновременно;то есть он обеспечивает объединения событий, но не пересечений.
Итак, у меня два вопроса.Во-первых, верно ли мое понимание этой ситуации, и, в частности, я прав в заключении, что мое решение выше - единственный способ обойти это?Во-вторых, чисто из любопытства, были ли у разработчиков какие-либо мысли или планы о том, как бороться с пересечениями событий?