VY
Size: a a a
VY
ЗП
MFunctorVY
instance mfunctorFreeT :: Functor f => MFunctor (FreeT f) where
hoist = hoistFreeT
ЗП
MFunctor с инвариантым поведениемЗП
hoistFreeT беззаконныйЗП
ЗП
ЗП
ЗП
hoistLogicT :DAK
purescript-events, который принимает messages :: Event Message, в update должен выполниться Effect, как бы вы такое организовали?updates = Event.fold update messages initialModel
где update :: Message -> ExceptT String Effect model -> ExceptT String Effect modelпотом
update msg state = Model.apply msg state
postUpdate userView <$> updates :: Event (Effect view)
где postUpdate :: (Either String model -> view) -> ExceptT String Effect model -> Effect view
postUpdate userView lastState = runExceptT ... lastState >>= userView.
postUpdate запускать, но где тогда?) и мессаджи применяются заново, когда пользователь подписывается на Event (Effect view) и делает Event.subscribe views $ \v -> v >>= .... То есть в момент бинда на каждое событие в этом Event запускаются снова все мессажди (включая новый), которые были переданы .apply до этого.AK
Event view, но тогда непонятно как "поглотить" эффект от runExceptTVY
events не использовал...AK
viewAK
AK
AK
view модель собирается заново обнаружил через DT.spy и дебаггер хрома — у меня в модели вся структура (типа дерево) на UUID (с вашей помощью) и при любом новом мессадже у всех листьев UUID новые при ожидавшейся структуре, а мессаджи в консоли выводятся в порядке (1, 1, 2, 1, 2, 3, ...).AK
update, в данном случае UUID.new, например, то он запускается, похоже, заново.update:update msg model =по идее сгенерённые раньше UUID не должны изменяться, но в логе следующее:
model >>= \prev -> do
uuid <- liftEffect UUID.new
pure $ "(" <> show msg <> ":" <> UUID.toString uuid <> ")-" <> prev
msg: MsgOne {}
(MSG-ONE:336228ee-b2e8-4c78-acf4-a8302125552b)-|
msg: MsgTwo {}
(MSG-TWO:7965f57f-cde5-4ca5-8377-bd03b9c71784)-(MSG-ONE:cbfeae0b-11f1-4e58-a4f9-35bab61bdbf2)-|
msg: MsgTwo {}
(MSG-TWO:2bea4621-873a-47f5-9803-0da53e5dc34f)-(MSG-TWO:fd7bdf0d-6f6b-46d2-b394-f268c4c5a473)-(MSG-ONE:256702ea-6702-4aa2-84c0-3977e1763e82)-|
Мессаджи правильные, а UUID — все разныеVY
VY
psc-ide-build, и увидел внизу OK. Причём, кажется, раньше такого никогда не было. Т.е. каких-то 3-4 месяца назад я точно этого не видел. Есть вот этот ишью https://github.com/purescript/purescript/issues/3145, но судя по всему, оно не связано. Попробую чекаутнуть зимний комит какой-нибудь.AK
update, в данном случае UUID.new, например, то он запускается, похоже, заново.update:update msg model =по идее сгенерённые раньше UUID не должны изменяться, но в логе следующее:
model >>= \prev -> do
uuid <- liftEffect UUID.new
pure $ "(" <> show msg <> ":" <> UUID.toString uuid <> ")-" <> prev
msg: MsgOne {}
(MSG-ONE:336228ee-b2e8-4c78-acf4-a8302125552b)-|
msg: MsgTwo {}
(MSG-TWO:7965f57f-cde5-4ca5-8377-bd03b9c71784)-(MSG-ONE:cbfeae0b-11f1-4e58-a4f9-35bab61bdbf2)-|
msg: MsgTwo {}
(MSG-TWO:2bea4621-873a-47f5-9803-0da53e5dc34f)-(MSG-TWO:fd7bdf0d-6f6b-46d2-b394-f268c4c5a473)-(MSG-ONE:256702ea-6702-4aa2-84c0-3977e1763e82)-|
Мессаджи правильные, а UUID — все разные