Size: a a a

2021 March 09

A ß in pro.elixir
Dmitry Ponyatov
взаимная рекурсия — функция Б вызывается в А, а А в Б
у нас тут не си, можно объявлять взаимнорекурсивные функции в любом порядке и без forward declaration
источник

ع

عاصم بن حارث... in pro.elixir
Denis Fakhrtdinov
Обычная история для elixir, для того чтобы привнести кусочек сахара в язык добавляется совершенно ненужная конструкция.
В эрланге, все так же: на экспорт пойдет ф-я с арностью 1,
а арность 2 на рекурсию вычисления суммы, но ее вызов будет: sum(List) -> sum(List, 0).  (без дефтолого шлака)
источник

ŹR

Źmićer Rubinštejn in pro.elixir
В эрланге нету \\
источник

DF

Denis Fakhrtdinov in pro.elixir
Ну да, естественно.
источник

ع

عاصم بن حارث... in pro.elixir
Źmićer Rubinštejn
В эрланге нету \\
так я и говорю, что без дефолтного... =)
источник

DF

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

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

DF

Denis Fakhrtdinov in pro.elixir
Я так и пишу, в общем-то.
источник

D

D in pro.elixir
"Нужность" - не только лень, а еще предотвращение ошибок в написании одного и того же
"Ненужность-1" - имхо это уже 2 разные ф-ии с разными именами
"Ненужность-3" - какой еще вырожденный случай? это просто declaration

я про свой пример выше
источник

DF

Denis Fakhrtdinov in pro.elixir
Предотвращение ошибок в написании одного и того же — это эрланговые define, которые зачем-то из эликсира выпилили.
источник

DF

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

DF

Denis Fakhrtdinov in pro.elixir
Впрочем, не выпилили дефолты, а не впилили, они работают на препроцессоре, так что это не совсем верное утверждение.
источник

D

D in pro.elixir
выше в примере я избежал дублирования, потому что не писал одни и те же дефолты в opts в каждой clause
источник

D

D in pro.elixir
Denis Fakhrtdinov
Как дефолты помогают избежать дублирования, если дефолт может быть только один by design?
вот поэтому и сделали function head
источник

DF

Denis Fakhrtdinov in pro.elixir
А ты попробуй напиши.
источник

DR

Dmitry Russ (Aleksan... in pro.elixir
Denis Fakhrtdinov
А ты попробуй напиши.
Компилятор в Elixir-е не позволяет дефолты у одной и той же функции в разных clause-ах дефинировать.
источник

D

D in pro.elixir

def get_settings(category, opts \\ [incoming: nil, outgoing: nil])
def get_settings(:profile, opts \\ [incoming: nil, outgoing: nil]), do: ...
def get_settings(:notifications, opts \\ [incoming: nil, outgoing: nil]), do: ...
def get_settings(:misc, opts \\ [incoming: nil, outgoing: nil]), do: ...


не пойму почему подсветка не срабатывает
источник

DF

Denis Fakhrtdinov in pro.elixir
Этот код не скомпилируется.
источник

D

D in pro.elixir
конечно!
источник

D

D in pro.elixir
об этом и речь
источник