@proelixir

Страница 844 из 1045
Dmitry
27.12.2017
12:32:58
Все консистентно.

Evgeny
27.12.2017
12:32:58
ага, конечно. ставишь выражение в квадратные скобки, а оно нихрена не меняется. Очень консистетно

MOAR SYNTACTIC SHUGAR!!!

Google
Evgeny
27.12.2017
12:34:32
ладно придется привыкнуть

Slava
27.12.2017
12:34:43
тебя заставляют писать на эликсире?

ну, я к тому, что суть эликсира - это порция сахара в мир эрланга

странно в таком случае браться за эликсир и жаловаться на сахар :)

Evgeny
27.12.2017
12:35:26
ага, но с сахаром явный перебор

на мой вкус

ладно, забейте, дайте поныть немного

Dmitry
27.12.2017
12:36:17
Сахара там 3-4 конструкции всего.

По пальцам одной руки сосчитать можно

Evgeny
27.12.2017
12:37:40
по-хорошему надо для конструкций [a: "b", c: "d"] выдавать при компилации предупреждение. Типа, ты, чувак, либо скобки убери, либо поставь двойные

Dmitry
27.12.2017
12:38:47
defmodule A do def a() do 1 end end defmodule A, do: (def a() do 1 end) defmodule(A, [do: (def a() do 1 end)])

Slava
27.12.2017
12:38:59
у меня прям дежавю, вспоминается боль джаваскриптеров, которым пришлось столкнуться с кофескриптом. рубисты как-то везде [s]поднасрали[/s] подложили себе соломки, а другие теперь страдают. я не жалуюсь, сам-то рубист, но забавно получается

Evgeny
27.12.2017
12:39:35
я далеко не джаваскриптер

Google
Evgeny
27.12.2017
12:39:55
я сишник/плюсовик/дешник

Slava
27.12.2017
12:40:16
а как увидел https://github.com/goby-lang/goby то и вовсе сознание потерял. вот везде могут сделать руби, только сам руби полечить не могут :)

Dmitry
27.12.2017
12:40:29
По сути если бы у Elixir не было бы сахара, то defmodule(A, [do: def(a(), do: 1)])

То код бы выглядил бы так.

Slava
27.12.2017
12:40:36
я далеко не джаваскриптер
я не конкретно про тебя, ничего личного, просто описал ситуацию

Marat
27.12.2017
12:40:42
я сишник/плюсовик/дешник
Ну после плюсов жаловаться на синтаксис другого языка это конечно да

Evgeny
27.12.2017
12:41:12
не на синтаксис, на WAT

то бишь неочевидное поведение.

но в плюсах еще хуже, согласен :)

Dmitry
27.12.2017
12:45:20
Т.е. стоит понимать, что defmodule, def и так далее - все это макросы, куда передается keyword list.

С do

Для do есть в данном случае тоже особенный сахар.

Вот он и весь сахар эликсира в 3-4 примерах, который показывает как вызов макроса превращается в defmodule в той форме, в которой большинству(кто не капался во внутренностях эликсира) известен.

Dmitry
27.12.2017
12:47:44
defmodule(A, [do: def(a(), do: 1)]) - это кстати, валидный код, для тех, кто этого мог не знать.

Сахар - есть или нет () для вызова функции/макроса, есть [] у keyword листа или нет, и исчезновение , при трансформации от , do: в do end

Evgeny
27.12.2017
12:50:50
более того, квадратные скобки можно убрать ? defmodule(A, do: def(a(), do: 1))

Dmitry
27.12.2017
12:51:14
Eugene Я выше привел этот пример с убиранием

Или забыл.

Evgeny
27.12.2017
12:52:10
ну именно такого нет

Google
Evgeny
27.12.2017
12:52:13
пофиг

Dmitry
27.12.2017
12:52:16
Т.е. вот они 3 элемента сахара, почему все пишут модули не как: defmodule(A, [do: def(a(), do: 1)])

Evgeny
27.12.2017
12:54:48
тогда уж defmodule(A, [{:do, def(a(), [{:do, 1}])}])

Dmitry
27.12.2017
12:55:09
Ага

Еще keyword в листы с кортежами обратно.

4 сахарных элемента.

Aliaksandr
27.12.2017
12:55:56
и A тоже в кейворд

Dmitry
27.12.2017
12:56:28
Он первый аргумент вызова макро.

Aliaksandr
27.12.2017
12:58:22
:"Elixir.A" вот так раскрыть можно вроде

Evgeny
27.12.2017
13:24:36
что за improper list в эликсире?

[1, 2] ++ 3 возвращает [1, 2 | 3], написано, что это improper list.

впрочем нашел уже дискуссии на тему этих странных листов :)

Evgeny
27.12.2017
13:28:08
правда зачем они нужны, непонятно

Ilja
27.12.2017
13:29:49
Ну это же head | tail. Нельзя же head1, head2 | tail

Evgeny
27.12.2017
13:31:48
можно даже a = [1, 2, 3, 4 | 5]

тут речь о другом. список, который не оканчивается пустым списком

Dmitry
27.12.2017
13:32:51
Это не валидный лист

Evgeny
27.12.2017
13:32:59
да ну?



Google
Dmitry
27.12.2017
13:34:17
Попробуй сделать Enum.count

Evgeny
27.12.2017
13:34:42
он не валидный, но елксир/эрланг позволяет создавать такие

Dmitry
27.12.2017
13:34:50
Конечно позволяют

Evgeny
27.12.2017
13:35:02
зачем? есть им применение?

и таки так можно было :)

Dmitry
27.12.2017
13:35:28
Можно эмулировать тупл

Admin
ERROR: S client not available

Dmitry
27.12.2017
13:35:35
Но лучше этого не делать

Evgeny
27.12.2017
13:36:09
да, читал про это

но сложность обращение к элементам этого тупла будет O(index) верно?

а последний элемент походу не извлечь никак. Enum.fetch([1, 2 | 3], 2) не работает

а, можно паттерн матчингом [a, b | c] = [1, 2 | 3]

зачем я занимаюсь этой херней?

Ilja
27.12.2017
13:40:28
А что это в итоге за конструкция получилась? is_list -> true, is_tuple -> false. Но это и не лист. Что это такое?

Evgeny
27.12.2017
13:40:57
это лист, но так называемый improper list

Dmitry
27.12.2017
13:41:21
Просто функции из :lists с ними работают неправильно

Ilja
27.12.2017
13:43:40
А какой физический смысл имеет его последний элемент?

Evgeny
27.12.2017
13:43:53
ну, он последний :)

в нормальных списках - последний элемент - пустой список

Google
Evgeny
27.12.2017
13:45:24
в эликсире любой список, логически что-то вроде туплы из двух элементов: головы и списка-хвоста

а тут хвост - не список

Ilja
27.12.2017
13:46:23
Вот о том и речь, что хвост - не список. Например, [1, 2, 3, 4 | [5]] - всё нормально.

Удивительно, что cons сработал с некорректным аргументом. Там мог бы быть гуард. Но, вероятно, не сделан для производительности.

Evgeny
27.12.2017
13:52:29
забавно, но такой список занимает на одно машинное слово меньше места

правда только для двухэлементного списка



?
27.12.2017
20:59:06
Ничего себе

Taras ?
27.12.2017
21:07:34
постой, паровоз, не стучите, колеса ...

Alexander
28.12.2017
02:10:59
Валидацию никто не отменял
дело в том, что в том же фениксе валидация таких вещей зарыта еще до роутера

вообще есть интересная концепция api gateway, которые ставятся перед аппом и рулят и рейтлимитами и кривыми данными

из платных наверное runscope из бесплатных - адовый шлак Kong и что-то еще на nginx построенное

кстати на эликсире наверное охреренный бы апи гейтвей получился

все. нет больше сил. в жопу js. Кто тут агитировал Кложуру?

вот это стоит пробовать? https://github.com/Day8/re-frame

Andrey
28.12.2017
06:45:54
Говорят стоит

я пробовал голый реагент, норм заходит

Страница 844 из 1045