Size: a a a

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

2020 December 09

SO

Sash Osh in Elm Lang сообщество разработчиков
вот тут вроде неплохой  паттерн приводится
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Проблема (Model, Cmd Msg, List (Request)) в том, что тут нельзя понять, а не попали ли какие-то запросы уже в Cmd — в типах нет этой информации, а значения непрозрачны
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Поэтому я и говорю про специальный тип-сумму для всех используемых эффектов — чтобы значения этого типа возвращать вместо Cmd
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
type Eff
 = Network Request
 | Random Random
 ...

update : Msg -> Model -> (Model, List Eff)
источник

SO

Sash Osh in Elm Lang сообщество разработчиков
ну вот в ссылке как раз про это
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
"Официально одобренные костыли" :)
источник

SO

Sash Osh in Elm Lang сообщество разработчиков
почему костыли, как должно быть чтобы не было костылей?
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
В статье тип отражает все виды эффектов. И сам непрозрачный при этом
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Шило на мыло
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Мы как не знали о том, что может прийти в Cmd, так и не знаем в случае этого их Effect
источник

AP

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

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Если перечислены только Random и Network, значит только они и могут быть
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
ну нельзя в Elm сделать так, чтобы было
update
 :: HasEffect Random m
 => HasEffect Network m
 => HasEffect Foo m
 => Msg -> Model -> m Model
то есть поиметь перечисление эффектов без наворачивания конкретного типа-суммы
источник

SO

Sash Osh in Elm Lang сообщество разработчиков
больше букв не всегда плохо)
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Всегда
источник

AP

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

SO

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

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
От чего защищает типизация, если Effect означает "что угодно"?
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
ну нельзя в Elm сделать так, чтобы было
update
 :: HasEffect Random m
 => HasEffect Network m
 => HasEffect Foo m
 => Msg -> Model -> m Model
то есть поиметь перечисление эффектов без наворачивания конкретного типа-суммы
Тут я знаю, что есть только генерация чисел, хождение в сеть и Foo
источник

SO

Sash Osh in Elm Lang сообщество разработчиков
почему что угодно?
источник