Size: a a a

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

2018 February 21

AK

Anton Kotenko in Elm Lang сообщество разработчиков
И правильно написано
источник

AP

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

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Но в целом первый ответ нормально описывает происходящее. Программа на Elm не делает эффекты. Она просто описывает их и отдаёт рантайму. Который может делать со списком команд что угодно - проигнорить, вернуть скэшированный результат, выполнить на пуле "потоков" параллельно
источник

AP

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

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Это настоящая изоляция эффектов - нет физического способа сделать внешне наблюдаемый эффект из самого языка. Если не использовать Native-код, конечно
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Чтобы подытожить:
update может вернуть при выполнении команду, несколько (Cmd.batch оборачивает их в одну), или ноль команд (Cmd.none), они в свою очередь конструируются только через таски (как бы говоришь «сделай апдейт и запусти таску, как только сработает, и если сработает, дёрни апдейт с обёрнутым мессаджем») или исходящими портами («сделай апдейт и отправь данные джаваскрипту в порт»);
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
А, ещё рандом-генераторы, да :)
источник

t

tiga in Elm Lang сообщество разработчиков
Одну команду же
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
В доках написано что таска это единственный способ создать команду
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
tiga
Одну команду же
Да, туплю
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Поправил
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Нет, ещё же Cmd.batch есть
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Поправил ещё раз
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Но в целом первый ответ нормально описывает происходящее. Программа на Elm не делает эффекты. Она просто описывает их и отдаёт рантайму. Который может делать со списком команд что угодно - проигнорить, вернуть скэшированный результат, выполнить на пуле "потоков" параллельно
Да, первый ответ годный
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
tiga
Одну команду же
Cmd, это моноид. С нейтральным элементом Cmd.none и ассоцативной операцией объединения двух команд в одну (эта, правда, скрыта за batch)
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Anton Kotenko
А, ещё рандом-генераторы, да :)
Вангую, что там тоже Task, который просто всегда success
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Cmd, это моноид. С нейтральным элементом Cmd.none и ассоцативной операцией объединения двух команд в одну (эта, правда, скрыта за batch)
Ты не помогаешь, Elm не про моноиды :)
источник

AP

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

at

andrei tshurotshkin! 🎄 in Elm Lang сообщество разработчиков
оо поехавшие элмеры
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Моноид, это математика. Эльм тоже про математику, хоть и в меньшей степени
Общая алгебра скорее
источник