banana-reactiva: evento de disparo que contiene el valor más actualizado de un comportamiento

Supongo que tengo un eventodesencadena que quiero hacer dos cosas cuando me despiden. Primero, quiero que actualice el valor de algunoscomportamient. En segundo lugar, si se cumplen otras condiciones, quiero que active otro eventoenvia con elactualizad valor del comportamiento. Expresado en forma de código, supongamos que tengo

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)

Entonces la pregunta es: ¿qué pongo en el ?????? así que esoenvia envía el valor más actualizado decomportamient, con lo cual quiero decir que el valor que incluye la actualización dedesencadena que solo se le aplicó.

Desafortunadamente, si entiendo correctamente, la semántica de Comportamiento es tal que el valor actualizado no está disponible de inmediato para mí, por lo que mi única opción aquí es esencialmente duplicar el trabajo y volver a calcular el valor actualizado del comportamiento para que pueda usarlo inmediatamente en otro evento, es decir, completar el ?????? con algo como

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

Ahora, hay un sentido en el que yolat poner la información actualizada en el comportamiento disponible para mí de inmediato mediante el uso de un comportamiento discreto en lugar de un comportamiento, pero en realidad esto es simplemente equivalente a darme un evento que se dispara simultáneamente con mi evento original con el valor actualizado, y a menos que tenga se perdió algo reactivo: el plátano no me da una manera de disparar un evento solo cuando otros dos eventos se han disparado simultáneamente; es decir, proporciona uniones de eventos pero no intersecciones.

Así que tengo dos preguntas. Primero, ¿es correcta mi comprensión de esta situación y, en particular, estoy en lo cierto al concluir que mi solución anterior es la única forma de solucionarla? En segundo lugar, por pura curiosidad, ¿ha habido alguna idea o plan de los desarrolladores sobre cómo lidiar con las intersecciones de eventos?

Respuestas a la pregunta(2)

Su respuesta a la pregunta