к
Event.mapAccum $ \a b -> Tuple a $ do
result <- f ...
pure result
Size: a a a
к
Event.mapAccum $ \a b -> Tuple a $ do
result <- f ...
pure result
к
VY
(a -> b -> m c), где m это MonadEff, напримерк
funcWithEff :: forall e. ... MyType -> Eff e MyType
main :: forall e. ... -> Eff e Unit
main ... = do
{ event, push } <- create
_ <- Event.mapAccum (\a b -> do
result <- funcWithEff ...
pure $ Tuple result ...
) event Something
_ <- subscribe event $ ...
pure unit
AK
AK
AK
mapAccum по Event State — в аккумуляторе может храниться (Maybe (Eff ...)) отписчик от предыдущих ивентов, если он есть, то его надо вызвать (порождает эффект), и подписаться на новые ивенты и положить в аккумулятор новый отписчик.к
AK
Event.fold сначала думал, но кажется мой случай это mapAccumк
к
AK
update msg state = state, получается ивент со стейтами (назовём их event msg и event state)event state) и пушает определённые мессаджи в первый (event msg) по событиям в другом отдельном ивенте/потоке/стриме/вотэва (event x)event x, подписаться на новый event x заново, чтобы слать в event msg спец мессаджи, и сохранить отписчики для следующего раза.AK
subUnsub возвращает Eff e (Canceller e), где Canceller e тоже эффект, но невыполненныйAK
subUnsub это функция которая вызывается внутри mapAccumAK
mapAccum, где "складируются" эффекты по вашему совету. и подписаться на него, выполняя эффекты, потому что subscribe :: (a -> Eff e Unit) -> event a -> Eff e Unit как разAK
subscribe, где их уже можно вызвать, кажется теперь всё правильно, спасибо!AK
ЗП
AK