Size: a a a

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

2020 June 18

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
ЧФСД — фундаментальная книжка, можно сказать. Большая часть структур данных на этом фундаменте построена в большинстве же ФП-языков.
источник

AP

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

YK

Yuri Kostin in Elm Lang сообщество разработчиков
Угу, это ценно, спасибо.
Обязательно поищу
источник

YK

Yuri Kostin in Elm Lang сообщество разработчиков
Милевского смотрел в Ютубе. В какой-то момент стало тяжко
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Милевский — хардкор по сравнению с Окасаки
источник

YK

Yuri Kostin in Elm Lang сообщество разработчиков
Aleksei (astynax) Pirogov
Милевский — хардкор по сравнению с Окасаки
Надеюсь 😄
источник

AP

Aleksei (astynax) Pi... in Elm Lang сообщество разработчиков
Ну и Окасаки пишет про инженерию, а Милевски — про математику %)
источник

YK

Yuri Kostin in Elm Lang сообщество разработчиков
Угу
источник

k

kl mw in Elm Lang сообщество разработчиков
недавно возник такой вопрос -- нет ли какого более красивого синтаксиса для того чтобы обновить поле в record типе, применив функцию к этому полю?
источник

k

kl mw in Elm Lang сообщество разработчиков
ну скажем у нас есть model : {... , history: List String }
источник

k

kl mw in Elm Lang сообщество разработчиков
идиоматичный elm предлагает писать вот так {model | history = "New message!" :: model.history}
источник

k

kl mw in Elm Lang сообщество разработчиков
а я хотел бы какой то синтаксис типа {model | history << ((::) "New message!") }
источник

k

kl mw in Elm Lang сообщество разработчиков
те обобщенно говоря, если у нас есть record r с полем a: A, то используя некоторую функцию next :: A -> A можно было бы написать {r | a << next} эквивалентно {r | a = next r.a}
источник

k

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

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Yuri Kostin
Тут кстати, тоже был вопрос.
Immutable или Mori?)
Был у меня опыт и с иммутэйбл и с мори. В общем то нормально но как только нужна какая-либо интеграция сразу возникают проблемы, нужно заворачивать, разворачивать... целая гора геморроя ... я бы советовал не использовать ни то ни другое, а использовать нативные средства js... в том же элме например так и поступают, там нет никаких обновить структуру на пять уровней вглубь. Если прямо вообще ну очень нужна библиотека какая, то можно рамбду или иммер. Но я бы все-таки настоятельно советовал вообще без всего
источник

MB

Mikhail Bortnyk in Elm Lang сообщество разработчиков
kl mw
есть ли возможность как-то расширить компилятор Elm чтобы добавить такой синтаксический сахар?
Возможность есть, исходники открыты, расширяйте 🙂
источник

DK

Denis Krivosheev in Elm Lang сообщество разработчиков
Denis Krivosheev
Был у меня опыт и с иммутэйбл и с мори. В общем то нормально но как только нужна какая-либо интеграция сразу возникают проблемы, нужно заворачивать, разворачивать... целая гора геморроя ... я бы советовал не использовать ни то ни другое, а использовать нативные средства js... в том же элме например так и поступают, там нет никаких обновить структуру на пять уровней вглубь. Если прямо вообще ну очень нужна библиотека какая, то можно рамбду или иммер. Но я бы все-таки настоятельно советовал вообще без всего
Проблемы со спредами обычно возникают когда структуры данных не подкреплены модулями для работы с этими структурами
источник

MB

Mikhail Bortnyk in Elm Lang сообщество разработчиков
кстати, должно быть не очень сложно. особенно если сделать именно как сахар, развертывание в аналогичный оригинальному ast - тогда даже elm-core не надо будет патчить
источник

YK

Yuri Kostin in Elm Lang сообщество разработчиков
Denis Krivosheev
Был у меня опыт и с иммутэйбл и с мори. В общем то нормально но как только нужна какая-либо интеграция сразу возникают проблемы, нужно заворачивать, разворачивать... целая гора геморроя ... я бы советовал не использовать ни то ни другое, а использовать нативные средства js... в том же элме например так и поступают, там нет никаких обновить структуру на пять уровней вглубь. Если прямо вообще ну очень нужна библиотека какая, то можно рамбду или иммер. Но я бы все-таки настоятельно советовал вообще без всего
Спасибо.

Рамду и так используем. Но траблы типа of undefined и подобные всё равно встречаются.
Вот думал внести Maybe, Either и прочие радости. Кажется, что Sanctuary поддерживает большую часть методов ramda, да ещё и в safe виде. Мне показалось, что это хороший вариант, и что переход будет условно бесшовным. Но вполне может быть, что я не прав.
источник

RT

Roman Truschev in Elm Lang сообщество разработчиков
Denis Krivosheev
Проблемы со спредами обычно возникают когда структуры данных не подкреплены модулями для работы с этими структурами
Вот тут как раз тоже самое говорят https://discourse.elm-lang.org/t/proposal-record-setters/5920/12
источник