Size: a a a

PureScript — русскоговорящее сообщество

2018 April 23

к

кана in PureScript — русскоговорящее сообщество
Event.mapAccum $ \a b -> Tuple a $ do
   result <- f ...
   pure result
источник

к

кана in PureScript — русскоговорящее сообщество
тебе нужно вернуть Tuple, в котором одно из значений - с эффектом, а не весь tuple с эффектом
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
хех, pursuit тоже в блоке у меня :(
по идее нужно traverse или sequence, чтобы эффекты выполнить
я думаю должнa быть какая-то ф-ция с арументом типа (a -> b -> m c), где m это MonadEff, например
источник

к

кана in PureScript — русскоговорящее сообщество
Anton Kotenko
то есть как бы:

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
лучше объясни свою задачу, а то кажется мне, с mapAccum такое не сделать
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
кана
тебе нужно вернуть Tuple, в котором одно из значений - с эффектом, а не весь tuple с эффектом
хм, вполне вариант, думаю, спасибо!
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
кана
лучше объясни свою задачу, а то кажется мне, с mapAccum такое не сделать
довольно сложная задача, при определённом состоянии стейта приложения нужно отменить одни ивенты и подписаться на другие.
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
в смысле например есть мессадж (как в TEA :) ) который приходит и он сигнализирует, что "пора", и когда "пора", то в дело вступает этот mapAccum по Event State —  в аккумуляторе может храниться (Maybe (Eff ...)) отписчик от предыдущих ивентов, если он есть, то его надо вызвать (порождает эффект), и подписаться на новые ивенты и положить в аккумулятор новый отписчик.
источник

к

кана in PureScript — русскоговорящее сообщество
хм, mapAccum там какой-то кастомный, не из traversable
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
да, я на Event.fold сначала думал, но кажется мой случай это mapAccum
источник

к

кана in PureScript — русскоговорящее сообщество
а отписчик отписывается от тех эвентов, по которым ты мапаешь?
источник

к

кана in PureScript — русскоговорящее сообщество
так-то выглядит так, что нужен стрим эффектов
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
не, там другие ивенты, отдельные.
вернее есть ивент с мессаждами (TEA), там работает update msg state = state, получается ивент со стейтами (назовём их event msg и event state)
и есть отдельный флоу, который подписывается/мапается на ивент со стейтами (event state) и пушает определённые мессаджи в первый (event msg) по событиям в другом отдельном ивенте/потоке/стриме/вотэва (event x)
идея в том, что отдельный флоу должен, когда "пора" убить подписки на event x, подписаться на новый event x заново, чтобы слать в event msg спец мессаджи, и сохранить отписчики для следующего раза.
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
ох :)
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
и получается что subUnsub возвращает Eff e (Canceller e), где Canceller e тоже эффект, но невыполненный
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
subUnsub это функция которая вызывается внутри mapAccum
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
а, я наверное понял, надо будет взять ивент, возвращённый из mapAccum, где "складируются" эффекты по вашему совету. и подписаться на него, выполняя эффекты, потому  что subscribe :: (a -> Eff e Unit) -> event a -> Eff e Unit как раз
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
да, помогло все эффекты хранить в ивентах не вызывая и таким образом вынести в subscribe, где их уже можно вызвать, кажется теперь всё правильно, спасибо!
источник
2018 April 25

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Всё равно здесь довольно тихо, можно я ещё вопрос про Smolder и DOM Event Listeners задам? :)
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
что ты там такое с behaviors делаешь?
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
одну свою либу пробую двинуть на пурсу, но сложно это :)
источник