Size: a a a

2021 March 09

AB

Alex Bubnov in pro.elixir
ну, предположим, синтаксически эрланг действительно консистентнее эликсира, только радости это не приносит
источник

AB

Alex Bubnov in pro.elixir
и with, даже вот такой, к которому я каждый раз с трудом вспоминаю пунктуацию, всё равно лучше, чем его полное отсутствие
источник

AB

Alex Bubnov in pro.elixir
опять же, пунктуация в with не основная его дыра
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Спора особого не было, просто пришёл человек который говорит, что куча всего в Elixir-е абсолютно неправильно, а в Erlang-е сделано правильно и по-другому нельзя. Что опциональные аргументы в Elixir-е - это неправильно - что больше проблем создают, чем решают (хотя во многих местах - это огромная пользу). Что структурами нельзя ни в коем случае заменять record-ы (хотя это делается, я даже в Erlang-коде видел).

Хотя по сути громкие "неправильно" - лишь очень субъективное мнение, которые выдаётся за объективые правильно / неправильно.
источник

AB

Alex Bubnov in pro.elixir
Alex Bubnov
опять же, пунктуация в with не основная его дыра
главная его проблема - он не позволяет легко определить, какой именно шаг его не прошел
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Да там нет проблем с пунктуацией. Если убрать синтаксический сахар - всё можно разносить в любые строчки - как в Erlang-е.
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Хоть в одну строку писать.
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
И есть 2-3 конструкции для сахара, которые сенсетивны к переносам.
источник

AB

Alex Bubnov in pro.elixir
Dmitry Russ (Aleksandrov)
Да там нет проблем с пунктуацией. Если убрать синтаксический сахар - всё можно разносить в любые строчки - как в Erlang-е.
да есть, есть - необходимость скобок, неспособность обработать висящую запятую
источник

AB

Alex Bubnov in pro.elixir
это всё какие-то детские абсолютно проблемы, несерьезно
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Alex Bubnov
да есть, есть - необходимость скобок, неспособность обработать висящую запятую
В Erlang-е тоже нельзя обработать запятую. Там вообще с удобством для рефакторинга всё хуже.
источник

AD

Anastasiya Dyachenko in pro.elixir
Alex Bubnov
главная его проблема - он не позволяет легко определить, какой именно шаг его не прошел
мне кажется это решается разными ошибками на каждом шаге
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Настолько, что я реально видел этот ужасный код в реальном софте в Erlang-е:


, do_something
, ...
источник

LL

Lama Lover in pro.elixir
Dmitry Russ (Aleksandrov)
Да там нет проблем с пунктуацией. Если убрать синтаксический сахар - всё можно разносить в любые строчки - как в Erlang-е.
А мне кажется, что в этом и есть его главная фишка.
Есть люди, которые делают {:step_name, bar} <- {:step_name, foo()}, но для такого лучше либо
1) Просто выносить в разные приватные функции
2) Всё писать в одном стиле. Типа чтобы все шаги в with возвращали либо {:ok, res} | {:error, reason} (где у всех reason разный), либо nil | res
источник

DF

Denis Fakhrtdinov in pro.elixir
Alex Bubnov
главная его проблема - он не позволяет легко определить, какой именно шаг его не прошел
Коллеги подсказали элегантный хак 🙂
with {:foo, foo} <- {:foo, do_foo()},
       ...
источник

LL

Lama Lover in pro.elixir
Denis Fakhrtdinov
Коллеги подсказали элегантный хак 🙂
with {:foo, foo} <- {:foo, do_foo()},
       ...
Антиэлегантный хак
источник

AB

Alex Bubnov in pro.elixir
Denis Fakhrtdinov
Коллеги подсказали элегантный хак 🙂
with {:foo, foo} <- {:foo, do_foo()},
       ...
ну, это правильный шаг, но только первый
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Lama Lover
А мне кажется, что в этом и есть его главная фишка.
Есть люди, которые делают {:step_name, bar} <- {:step_name, foo()}, но для такого лучше либо
1) Просто выносить в разные приватные функции
2) Всё писать в одном стиле. Типа чтобы все шаги в with возвращали либо {:ok, res} | {:error, reason} (где у всех reason разный), либо nil | res
Я к примеру, предпочитаю использовать структуры для ошибок - и сразу в ошибку вкладывать весь смысл, что пошло не так. Для кода, который должен вернуть ошибку пользователю.
источник

DF

Denis Fakhrtdinov in pro.elixir
Lama Lover
Антиэлегантный хак
Есть альтернатива?
источник

LL

Lama Lover in pro.elixir
Denis Fakhrtdinov
Есть альтернатива?
Я написал
источник