Size: a a a

Elm Lang сообщество разработчиков

2019 October 29

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Нет траверса. Только свертку можно сделать со связыванием цепочки
источник

MP

Max P in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Нет траверса. Только свертку можно сделать со связыванием цепочки
вот эти слова "траверс, свертка, связывание цепочки" - это откуда? из какой теории?)
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Да тут не траверс, а обмен местами функторов, на самом деле
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
f (g a) -> g (f a)

"Список рандомов в рандом списка" и подобные
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Нет траверса. Только свертку можно сделать со связыванием цепочки
да, потом в Cmd.batch можно отдать просто
источник
2019 October 30

MP

Max P in Elm Lang сообщество разработчиков
привет всем, я правильно понял, что если мне хочется обновить nested record, то я как-то неправильно думаю? Как должно быть?

пример: у меня есть модель - App { modal: { a: True }, ... }
мне нужно modal.a на False заменить.
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
{ foo | bar = { foo.bar | baz = False } }
источник

MP

Max P in Elm Lang сообщество разработчиков
то есть в обновлении вложенного свойства ничего плохого нет?
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Ну это считается протечкой абстракции, но иногда можно
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
подмодель по идее нужно подабдейтом обновлять
источник

MP

Max P in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
подмодель по идее нужно подабдейтом обновлять
ок, то есть я должен написать функцию, которая будет принимать model.modal и возвращать новую modal, которую я затем в model верну?
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Не, прям update использовать, соответствующий вложенной модели
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Вкладываете модель — вкладывайте и update с view
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Тогда оно будет композабельно
источник

SG

Sasha Golubev in Elm Lang сообщество разработчиков
@maxfarseer
На примере модулей можно рассмотреть:
у вас есть App(у него model, update, view, subscribes, e.t.c.)
В рамках этого приложения есть условно Навигация  Nav(со своими: model, update, view, subscribes).
Область видимости Nav только ее model, .. e.t.c.

И порядок действий приблизительно следующий:
1. Произошел update App, внутри него вы поняли, что надо обновить навигацию, и вызвали Nav.update и передали параметры Nav.Model, Nav.Msg
источник

SG

Sasha Golubev in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
{ foo | bar = { foo.bar | baz = False } }
@maxfarseer
Как правило если у вас есть какая-то атомарная(неделимая) сущность(модель) и в ней есть вложенность, то в принципе в этом никаких проблем нет, можно использовать вот так.
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Если атомарная сущность, Еван учит не делать вложенность :)
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Если что, я лично не вижу ничего плохого в таких вложенных апдейтах, пока сущность именно атомарна.

Вот ходить в чужую модель, если уже есть update для неё, я бы не стал
источник

SG

Sasha Golubev in Elm Lang сообщество разработчиков
@maxfarseer
Посмотрите как тут код написан:
https://github.com/elm/package.elm-lang.org/tree/master/src/frontend
источник

SG

Sasha Golubev in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Если атомарная сущность, Еван учит не делать вложенность :)
Если вы пишите какой-нибудь dsl, то как бы вам предметная область диктует условия
источник