было value |> do_something() |> my_lambda.() стало value |> do_something() |> then(my_lambda)
а не объясните заодно зачем точка при вызове? почему просто func_value() не сделали?
Потому что func_value() обращается в пространство имён атомов, а func_value.() - переменных
Этому нет разумного объяснения
Выше разумное обьяснение. Точка указывает на трансляцию в вызов переменной, а не атома
Почему во всех других языках обходится без этого? Типа эрланг или питон
потому что в эрланге переменные и атомы итак по-разному пишутся, а в эликсире одинаково
Да ты че. В эрланге как раз стройно, примитивно и понятно: myfun() вызов функции по атому myfun Myfun() вызов лямбды из переменной Myfun В руби черти че неудобное. В питоне единое пространство имен переменных и функций и лямбд
я вроде уже пару книг осилил а первый раз вижу такие термины. где бы почитать что за ними стоит?
сорян за заумь в общем имена функций и имена переменных живут в разных пространствах имён, и точкой мы даём эликсиру понять, что мы имеем в виду не функцию f в текущем модуле, а переменную f
А это всё ради того чтобы локальные имена могли совпадать с функциями объявлеными в модуле?
я думаю чтобы было зеркально с эрлангом
Обсуждают сегодня