reactive-banana: evento de disparo que contém o valor mais atualizado de um comportamento

Suponha que eu tenha um eventodesencadea que eu quero fazer duas coisas quando demitido. Primeiro, quero atualizar o valor de algunscomportament. Segundo, se outras condições forem atendidas, desejo que ele inicie outro evento send_off com oAtualizad valor do comportamento. Expressa em forma de código, suponha que eu tenho

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)

Então a pergunta é: o que eu coloco no ?????? de modo a send_off envia o valor mais atualizado decomportament, com o que quero dizer que o valor que inclui a atualização dedesencadea que foi aplicado a ele.

Infelizmente, se eu entendi direito, a semântica do comportamento é tal que o valor atualizado não está disponível imediatamente para mim, então minha única opção aqui é essencialmente duplicar o trabalho e recalcular o valor atualizado do comportamento para que eu possa usá-lo imediatamente em outro evento, ou seja, para preencher o ?????? com algo como

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

Agora, há um sentido em que eupod disponibilize as informações atualizadas no comportamento imediatamente, usando um Discreto em vez de Comportamento, mas na verdade isso equivale a me dar um evento que é disparado simultaneamente com o meu evento original com o valor atualizado, e a menos que eu tenha perdeu algo reativo - banana não me dá uma maneira de disparar um evento apenas quando dois outros eventos são disparados simultaneamente; isto é, fornece uniões de eventos, mas não interseções.

Então eu tenho duas perguntas. Primeiro, meu entendimento dessa situação está correto e, em particular, estou certo ao concluir que minha solução acima é a única maneira de contornar isso? Segundo, puramente por curiosidade, houve algum pensamento ou plano dos desenvolvedores sobre como lidar com cruzamentos de evento

questionAnswers(1)

yourAnswerToTheQuestion