Size: a a a

2019 November 25

DA

Denis Afonin in pro.elixir
Кстати, лично я решил эту проблему очень просто: если требуются скобки, всегда пишу (function a, b, c). И гори оно всё в аду.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Без скобок пишутся некоторые макросы - ничего больше
источник

ŹR

Źmićer Rubinštejn in pro.elixir
И то, это дань руби корням
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Потому что эликсир форматтер прям сам расставляет в некоторых местах скобки
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Кроме того, скобки хорошо парсятся в IDE, совпадают со спеками и определением самой функции
источник

DA

Denis Afonin in pro.elixir
Вот что мне очень понравилось, когда впервые увидел код на Elixir-е, так это именно предоставляемая им свобода самовыражения. Собственно, случай с one a, two b, c, d поэтому удивление и вызывает - они ж не поленились для него отдельное сообщение в парсер добавить. Почему?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Естественно, при использовании скобок никогда не проебывается порядок применения, а так же всегда понятно где функция, а где переменная
источник

AM

Aliaksandr Martsinovich in pro.elixir
свобода самовыражения это в руби)
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Поддерка "без скобок" - для DSL
источник

DA

Denis Afonin in pro.elixir
Руби я не знаю, начинал с бэйсика/паскаля/си/перла/хаскеля, и у всех языков свои особенности, тем или иным образом обоснованные. А вот обоснование ограничения one a, two b, c, d я пока не нашёл.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
У тебя есть DSL? Если нету - пиши нормально
источник

AM

Aliaksandr Martsinovich in pro.elixir
Так а что не так `one a, two b, c, d`? тут же реально скобки произвольно можно расставить
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Пример, где не нужны скобки:

from u in "users",
where: u.age > 18,
select: u.name


Вот для этого в эликсире есть вохможность писать без скобок
источник

DA

Denis Afonin in pro.elixir
Для меня весь код на Elixir-е - это DSL, но это философия. Пока же я думаю, что в случае `one a, two b, c, d` это либо чья-то личная блажь (или желание повоспитывать, что для меня одно и то же), либо какое-то интересное ограничение парсера
источник

AF

Aleksandr Fomin in pro.elixir
Denis Afonin
Да. А вот интересно, почему бы для сравнений не сделать Protocol?
постоянно про это спрашивают, вот из недавнего https://github.com/elixir-lang/elixir/pull/8817
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Denis Afonin
Для меня весь код на Elixir-е - это DSL, но это философия. Пока же я думаю, что в случае `one a, two b, c, d` это либо чья-то личная блажь (или желание повоспитывать, что для меня одно и то же), либо какое-то интересное ограничение парсера
Как правильно то?

```
one(a, two(b, c), d)
```

Может так?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Или так:

one (a, two(b), c, d)
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Это интересное ограничение парсера?)
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Весь код не эликсире не может быть DSL по определению
источник

AM

Aliaksandr Martsinovich in pro.elixir
(one a, (two b), c, d)
источник