Size: a a a

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

2017 May 03

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
В Erlang только мутабельности нет. IO там обычное - где хочешь, там и вызывай
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
При этом чистые функции можно везде писать. Хоть в питоне
источник

AK

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

AK

Anton Kotenko in Elm Lang сообщество разработчиков
есть какой-нибудь пакет для быстрой работы с вложенными деревьями?
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
А самый сильный момент в ФП, это разделение ответственности - чистый код отдельно, грязный отдельно. При этом "грязный код" должен входить в систему типов, т.е. эффекты должны быть выразимы в языке
а таски в Эльме разве не это?
источник

AP

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

AP

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

AP

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

AP

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

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Для GUI-строения это подходит (с ограничениями)
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Но эта же инверсия контроля мешает строить по-настоящему сложные вещи - всё превращается в task hell. Не так быстро, как JS скатывается в callback hell, но столь же неминуемо (task hell не касается только совсем простых приложений на базе beginnerProgram, ибо "нет тасок - нет проблем")
источник

AK

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

AK

Anton Kotenko in Elm Lang сообщество разработчиков
запрос к API и в редких случаях работа с файлами
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
хотя дрэг-н-дроп ещё...
источник

AP

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

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Скажем, в elm нормально не сделать STM, а это очень крутая штука. Ненормально сделать можно, конечно, но пользоваться никто не будет :)
источник

AP

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

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Эльм намеренно не язык "на все руки мастер", чем и хорош. Из действительно необходимых вещей вижу только генерацию случайных чисел и она вроде норм. Или вот в графике текстуры грузить, но это тоже норм сделано, например, в elm-webgl.
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Но всякие админко-подобные программы на Elm наверное писать пока не стоит.
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
но как и на реакте, смысла нет, предназначение другое.
источник