Size: a a a

2021 March 09

DR

Dmitry Russ (Aleksan... in pro.elixir
Дубликации дефолтов не произошло.
источник

DF

Denis Fakhrtdinov in pro.elixir
Так дублирования не произошло бы и в случае
def get_settings(category), do: get_settings(category, [incoming: nil, outgoing: nil])
источник

DF

Denis Fakhrtdinov in pro.elixir
Где здесь дефолты помогают избежать дублирования я не вижу.
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Denis Fakhrtdinov
Так дублирования не произошло бы и в случае
def get_settings(category), do: get_settings(category, [incoming: nil, outgoing: nil])
Да, но есть сахар позволяющий всё это ещё упростить.
источник

DF

Denis Fakhrtdinov in pro.elixir
Не упростить, а усложнить, потому что возникают ненужности (1-3).
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Denis Fakhrtdinov
Не упростить, а усложнить, потому что возникают ненужности (1-3).
Очень субъективные "ненужности".
источник

D

D in pro.elixir
Denis Fakhrtdinov
Так дублирования не произошло бы и в случае
def get_settings(category), do: get_settings(category, [incoming: nil, outgoing: nil])
можно было бы и так, но зачем? если оно интуитивно понятно в короткой форме
источник

A ß in pro.elixir
в эрланге аргументы по умолчанию это идиома, а в эликсире элемент языка, нравится тебе это или нет
источник

DF

Denis Fakhrtdinov in pro.elixir
Да я и не спорю.
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Denis Fakhrtdinov
Нужность: нам лень писать строчку кода а-ля sum(List) -> sum(List, 0).
Ненужность-1: нельзя написать джве клозы с дефолтами.
Ненужность-2: функция притворяется arity 2, хотя она на самом деле функция с arity 1.
Ненужность-3: появляется вырожденный случай с головой без тела и без души (без дефолтов).
Ненужность-1 - как раз нужность.
Ненужность-2 - функция без тела - это просто декларация, её не существует (смотри протоколы - там это тоже используется). Ненужности тут нет и поведение логичное.
Ненужность-3 На любом языке можно написать хрень, которая не пройдёт обычный code review.
источник

A ß in pro.elixir
пиздец душнилово, как и структуру против рекордов
источник

DF

Denis Fakhrtdinov in pro.elixir
Кто ж виноват, что у языка биполярочка.
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Denis Fakhrtdinov
Так дублирования не произошло бы и в случае
def get_settings(category), do: get_settings(category, [incoming: nil, outgoing: nil])
Посмотри ковбой и кучу других библиотек, где в Erlang-е до десятка строчек уходит на дефолтные аргументы одной функции. И как это в Elixir-е решается одной строкой. Легче написать, легче прочитать - никаких проблем с этим нет вообще.
источник

DF

Denis Fakhrtdinov in pro.elixir
Приведи пример замены десятка строчек на эрланге одной строчкой на эликсире.
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Denis Fakhrtdinov
Приведи пример замены десятка строчек на эрланге одной строчкой на эликсире.
https://github.com/benoitc/hackney/blob/master/src/hackney.erl#L156-L185 - 11 строк кода заменяется одной строкой:


def request(method \\ :get, url, headers \\ [], body \\ "", opts \\ []) do
 ...
end
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Denis Fakhrtdinov
Приведи пример замены десятка строчек на эрланге одной строчкой на эликсире.
И честно сказать, я раз в 50 потратил больше времени, чтобы понять, какие дефолты ставит эта функция в Erlang-е пока писал её на Elixir-е.
источник

DF

Denis Fakhrtdinov in pro.elixir
Хм, ну да, в этом случае строчки сэкономятся.
источник

DF

Denis Fakhrtdinov in pro.elixir
Но я бы и на эликсире написал бы точно так же.
источник

DF

Denis Fakhrtdinov in pro.elixir
Просто потому что тогда явно видно какие функции из модуля экспортируются и с какими arity.
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Denis Fakhrtdinov
Но я бы и на эликсире написал бы точно так же.
Написание на любом языке плохого кода спасает только code review
источник