Size: a a a

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

2018 August 22

AK

Anton Kotenko in Elm Lang сообщество разработчиков
именно так, поэтому и "Native" модули должны ASAP переписываться на сами языки
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Pawel Filimonenkow
он юзается одной единственной крупной организацией, в остальном по мелочи кем-то, оставаясь в маргинальной нише. Но конечно все остальные джавоскриптозаменители и близко с ним не стояли по уровню развитости
Конечно стояли, и не то что рядом - впереди сильно. ClojureScript более распространен, чем Elm. И разных компаний, пользующих его сильно больше, чем одна. Я уж не говорю о BuckleScript/Reason - ризн хоть и новый, но это новый синтаксис к баклскрипту, который существует давно и тем же фейсбуком используется вовсю (OCaml ибо, на который в фейсбуке сели основательно)
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Я понимаю, писателям на эльме нравится чувствовать себя пользователями популярного стека, но это не так. Маргинальщина, как она есть.
источник

AP

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

AK

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

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Как ты понимаешь, мне не сильно стремно быть маргиналом - хаскелист же :)
источник

AK

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

A

Andrey in Elm Lang сообщество разработчиков
напиши чего-нибудь в продакшн и мигом там окажешься!
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Ох нет, я так понимаю это как вера или философия, нельзя смешивать Хаскель с грязью бизнеса
источник
2018 August 23

p

parket in Elm Lang сообщество разработчиков
Часто некоторые вещи просто удобны. HOT + typeclass, RankN, кастрмные операторы, туплы произвольного размера? 😄
источник

p

parket in Elm Lang сообщество разработчиков
Я могу понять, почему Elm пошел по пути упрощения ( би мейнстрим, да? ), но  у простоты есть предел неприличного. Ну и типа, монополия на "core" код, при неполном покрытии целевой платформы... 😐
источник

AK

Anton Kotenko in Elm Lang сообщество разработчиков
Ещё раз: это не новая версия, за которой нужно бежать вприпрыжку и обновлять всё что можно. Также не обязательно называть тех, кто использует 0.18, старпёрами (и старпёршами). Не нужно модничать "я обновился на 0.19" в докладах. Просто релизнулся компилятор новой версии (минорной, sic!), вы всё ещё можете, и реально долго можете, использовать 0.18 с его нативными либами. Даже на 0.17 можете вернуться, где ещё меньше ограничений было.
источник

AP

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

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Я сам-то не сильно продвинутый хаскелист. Но даже того минимума, который обычно используется без преувеличения в 100% реальных проектов на Haskell, в Elm нет. Т.е. нет не "примочек", а настоящих "рабочих лошадок" - именно это печалит. А не невозможность самовыразиться (читай "выпендриться").
источник

AP

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

И именно средства для управления сложностью кода делают язык пригодным для реализации на нём действительно больших проектов!

С этой точки зрения плох Go - абстрагирование там не в чести и встроенные средства для построения абстракции очень бедны (из, можно сказать, нет). А это означает, что большие проекты состоят из копипаст (в т.ч. и из копипаст ошибок!) и местных велосипедных ренеший (в Go тоже не принято переиспользовать чужой опыт, культура поощряет "скопировать к себе если уж сам не хочешь писать"). Процедурные языки имеют инструмент, созданный для управления сложностью - ООП. Да, "правильно готовить"  его умеет не каждый, но инструмент очевидно работает - иначе его бы выбросили на свалку истории. В Go нет ООП но и нет альтернативы.

Теперь смотрим на ФП. Было когда-то сказано "лучше иметь один тип и сто функций для работы с ним, чем десять типов и по десять функций для работы с каждым" - сказано это было в контексте Lisp, но работает и для ФП в целом. И если "один тип на все случаи жизни", это странная идея, то вот единый вокабулярий для работы с разыми типами, это отличная вещь!

И вот тут мы подходим к Elm. Единый вокабулярий отнюдь не означает "у нас везде map, просто это List.map, Maybe.map и т.п." - это разные функции для работы с разными типами. Т.е. нет возможности писать обобщённый код. И абсолютно не важно здесь, как эти функции называются (пусть даже и понятно и "читаемо")! Нельзя написать "библиотеку, которая обобщённо работает с коллекциями" и подобные сугубо полезные в реальных проектах вещи!

И всё только осложняется тем, что в Elm типизация статическая. Потому что в динамически типизированном ЯП мы можем хотя бы ad hoc полиморфизм силами "утиной типизации" сделать или на крайний случай прямо в функции решить, как с переданным типом работать (не сильно гибко и точно не особо расширяемо, но относительно обобщённый код писать позволяет). А при старической типизации в Elm мы имеем лишь "неограниченный" параметрический полиморфизм: мы всегда всё знаем о структуре, но никогда о "содержимом" типа. А значит мы не сможем без привнесения излишней сложности написать, скажем, функцию sort : List a -> List a - мы по построению не знаем ничего об a и не можем знать при текущей модели. Да, местный ad hoc есть в виде comparable, но с чего это автор решил, что ad hoc полиморфизм нужен только в тех местах, где он сейчас есть? Примеров могу привести много - и все из реальной жизни.

Так что же хорошего в том, что мы имеем ФП, но такой, где функции (и типы) пользователя - объкты второго сорта; где автор решил, что такие-то типы comparable, а пользовательские - нет; где автор stdlib может писать обобщённый код - внутри stdlib - а пользователи не могут?! И не нужно говорить о "сложности для новичков" и "те, кому надо, пойдут в другие языки" и в этом же контексте "у нас - успешный язык для решения реальных задач!". Это лукавство. Потому что зрелый язык помогает решать проблемы, а не создаёт искуственно препятствия для решения оных.
источник

QZ

Quet Zal in Elm Lang сообщество разработчиков
слуш, а в чем цель твоих набросов периодических? для просто троллинга как-то толстовато..
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
Это у @shamansir набросы в хаскелчатах.
источник

QZ

Quet Zal in Elm Lang сообщество разработчиков
ну то есть чуть что - ты всегда рад прийти и рассказать как плохо что в элме нет (выберите нужную фичу хаскеля)
но от такого нытья она ж и не появится?
источник

QZ

Quet Zal in Elm Lang сообщество разработчиков
а, то есть это месть ему за набросы в хаскельчатах? )
источник

AP

Aleksei (astynax) Pirogov in Elm Lang сообщество разработчиков
А я не набрасываю. Меня просят привести аргументы. Я привожу
источник