Size: a a a

2019 November 26

V

V in pro.elixir
Alexey Bolshakov
а если бы ко мне на ревью такое вот пришло, я бы вешливо спросил, а не долбоеб ли ты часом? )
Удваиваю.
источник

V

V in pro.elixir
источник

AU

Alexander Uljev in pro.elixir
Есть ещё Elm. Там нет запятых, а функции объявляются знаком равно.
источник

DA

Denis Afonin in pro.elixir
Вот уж не ожидал, что так бомбанёт:) В четвёртый раз сорри. Пусть все останутся при своих.
источник

A

Alexander in pro.elixir
Я видно опоздал на королевский срач
источник

a

arikai in pro.elixir
Denis Afonin
Ещё к вопросу о нытье: интересно, почему у |> такой высокий приоритет? А то из-за необходимости лишних скобок каждый раз задумываешься, стоит ли его использовать.

А ещё реально выбешивает
unexpected comma. Parentheses are required to solve ambiguity in nested calls.

This error happens when you have nested function calls without parentheses. For example:

   one a, two b, c, d

Это они принципиально, или у них там "дыра" в парсере, не позволяющая этот случай "по дефолту" разрулить?

Прошу прощения, накопилось. Больше не буду, обещаю☺️
Предположим, что у вас есть функции one/2, one/3, two/2 и two/3.
Как компилятор бы разрулил такую ситуацию?
Как one(a, two(b, c, d))?
Или one(a, two(b, c), d)?
Оба варианта валидны, и, даже, могут отработать с различной степенью правильности.
Компилятор действительно может зафорсить какой-то порядок применение аргументов, но _зачем_?
В другой подобной ситуации, и я могу вам это гарантировать, вам понадобится другой порядок применения аргументов.
И мы скатываемся опять же к проблеме неуверенности в правильности тех или иных конструкций в языке, считай, твоём инструменте.

И зачем все это? Чтобы в среднем писать так, как хочется вам, но иногда отходить от однородности стиля написанного вами кода? Как выше отметили, это неуважение к коллегам. Если их нет, ок - каждый "пишет" как хочет. Только с высокой вероятностью ваш код от такого не станет более поддерживаемым даже вами в обозримом будущем.

Компилятор проявляет неуважение лично к вам? Но ведь языков, благо, огромное количество. Не нравится - не пользуйтесь. Только дефолты для среды Elixir были выбраны  не глупыми людьми, и были продиктованы не только хотелками, но и ограничениями, которые накладываются при включении других, _более_ важных, как показалось разработчикам языка, фич, чем ненужное в данном случае опускание скобок.
источник

DA

Denis Afonin in pro.elixir
arikai
Предположим, что у вас есть функции one/2, one/3, two/2 и two/3.
Как компилятор бы разрулил такую ситуацию?
Как one(a, two(b, c, d))?
Или one(a, two(b, c), d)?
Оба варианта валидны, и, даже, могут отработать с различной степенью правильности.
Компилятор действительно может зафорсить какой-то порядок применение аргументов, но _зачем_?
В другой подобной ситуации, и я могу вам это гарантировать, вам понадобится другой порядок применения аргументов.
И мы скатываемся опять же к проблеме неуверенности в правильности тех или иных конструкций в языке, считай, твоём инструменте.

И зачем все это? Чтобы в среднем писать так, как хочется вам, но иногда отходить от однородности стиля написанного вами кода? Как выше отметили, это неуважение к коллегам. Если их нет, ок - каждый "пишет" как хочет. Только с высокой вероятностью ваш код от такого не станет более поддерживаемым даже вами в обозримом будущем.

Компилятор проявляет неуважение лично к вам? Но ведь языков, благо, огромное количество. Не нравится - не пользуйтесь. Только дефолты для среды Elixir были выбраны  не глупыми людьми, и были продиктованы не только хотелками, но и ограничениями, которые накладываются при включении других, _более_ важных, как показалось разработчикам языка, фич, чем ненужное в данном случае опускание скобок.
Спасибо за развёрнутый ответ.
Дабы не повторять вчерашней вакханалии, субъективную сторону проблемы я предлагаю опустить. Остаётся, исключительно интереса ради, вопрос, ради включения каких таких фич это ограничение было необходимо.

Само ограничение было добавлено в 2013-ом году:

commit ebe522ec507e2a09190e658ab9f9923b54310f00 (HEAD)
Author: José Valim <jose.valim@plataformatec.com.br>
Date:   Thu Jul 4 18:48:53 2013 +0200

   Tighten up the grammar rules regarding parentheses omission
   
   Prior to this commit, Elixir allowed too many ambiguous calls
   by ommitting the parentheses:
   
       do_something 1, is_list [], 3
       [1, is_atom :foo, 3]
   
   Both cases above would lead to a compilation error, as an attempt
   to call is_list/2 and is_atom/2 would happen. Those examples will
   now raise a syntax error, pointing to the ambiguous location.
   
   We have disallowed such examples throughout the language with
   the exception of one argument calls:
   
       assert is_list []
   
   Examples as above are extremely frequent and were kept as is.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Это ограничение было необходимо, чтобы неподдерживаемый ранее код стал поддерживаемым
источник

ДС

Дмитрий Свидерский in pro.elixir
Привет. Dializer в VS Code продолжает ругаться на спецификацию ф-ции, которой давно уже нет. Можно его как-то.. переинициализировать что-ли? Редактор перезапускал, компьютер перезагружал.
источник

JS

John Smith in pro.elixir
Дмитрий Свидерский
Привет. Dializer в VS Code продолжает ругаться на спецификацию ф-ции, которой давно уже нет. Можно его как-то.. переинициализировать что-ли? Редактор перезапускал, компьютер перезагружал.
а винду переустанавливал? 🤣
источник

P

Pavel in pro.elixir
Źmićer Rubinštejn
Разнообразие в том, как грамматически писать код? Никакого разнообразия быть не должно, есть стайлгайды, credo и слава богу
Где Элексир для макак, пасаны заждались? 🙂
источник

ДС

Дмитрий Свидерский in pro.elixir
John Smith
а винду переустанавливал? 🤣
Установил сразу линукс
источник

DA

Denis Afonin in pro.elixir
Źmićer Rubinštejn
Это ограничение было необходимо, чтобы неподдерживаемый ранее код стал поддерживаемым
Это неоднозначно. В описании коммита явно сказано, что до него вариант [1, is_atom :foo, 3] рассматривался как [1, (is_atom :foo, 3)], что для is_atom/1 неверно, но справедливо для любой другой функции с арностью 2.
источник

DA

Denis Afonin in pro.elixir
Получается, что необходимость этого изменения была продиктована какими-то неописанными тут причинами, либо личными предпочтениями автора (что ИМХО мало отличается от моих предпочтений писать (func a, b, c) вместо func(a, b, c).
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Дмитрий Свидерский
Привет. Dializer в VS Code продолжает ругаться на спецификацию ф-ции, которой давно уже нет. Можно его как-то.. переинициализировать что-ли? Редактор перезапускал, компьютер перезагружал.
Нужно удалить папку .elixir_ls
источник

ДС

Дмитрий Свидерский in pro.elixir
Źmićer Rubinštejn
Нужно удалить папку .elixir_ls
Спасибо! Как раз только что это проделал и теперь всё ок )
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Pavel
Где Элексир для макак, пасаны заждались? 🙂
Прикинь ты в C++ пишешь

i = ++i + ++i


А тебе компилятор в ответ:

Compile error: undefined attitude

Вот это и называется язык для макак, и эликсир в достаточно большой степени такой
источник

ŹR

Źmićer Rubinštejn in pro.elixir
И тут прибегает какой-нибудь товарищ, и говорит “сука сиплюсплюс, запрещает мне стрелять себе в ногу”
источник

ŹR

Źmićer Rubinštejn in pro.elixir
“Я готов прочитать мануалы, и потом каждый раз когда встречу это в чужом коде сидеть и на бумажке вычислять i”
источник

ŹR

Źmićer Rubinštejn in pro.elixir
“И вообще - свобода самовыражения превыше всего”
источник