Size: a a a

2021 January 08

A ß in pro.elixir
зачем append если можно сделать cons?
источник

YZ

Yura Zhivaga in pro.elixir
A ß
++ это стилистическое решение?
кстати да, вместо ++ лучше заюзать [elem | acc], так быстрее :)
источник

SK

Suren Kirakosyan in pro.elixir
A ß
зачем append если можно сделать cons?
А можно по-русски?😄
источник

A ß in pro.elixir
зачем делать [@foo] ++ acc если можно сделать [@foo | acc]?
источник

YZ

Yura Zhivaga in pro.elixir
Suren Kirakosyan
А можно по-русски?😄
https://stackoverflow.com/a/43861249 не совсем по русски, по думаю понятно)
источник

Е

Евгений in pro.elixir
Suren Kirakosyan
А можно по-русски?😄
Добавить элемент в начало списка намного быстрее, чем в хвост.
источник

A ß in pro.elixir
там не будет добавления в хвост
источник

SK

Suren Kirakosyan in pro.elixir
Yura Zhivaga
кстати да, вместо ++ лучше заюзать [elem | acc], так быстрее :)
Исправлено.
источник

A ß in pro.elixir
там будет рекурсия по первому аргументу из одного элемента
источник

Е

Евгений in pro.elixir
A ß
там не будет добавления в хвост
а точно, туплю
источник

A ß in pro.elixir
что совершенно бессмысленно, но не смертельно
источник

V

V in pro.elixir
Евгений
Вот опять я чешу репу.
Допустим есть некая функция обрабатывающая значение и возвращающая результат:
def match(val) do
И нужно добавить обработку списка значений. Возвращается соответственно список результатов.
Как кошернее, добавить клозу
def match(vals) when is_list(vals), do: Enum.map(&match(&1))
или таки отдельной функцией
def match_list(vals), do: Enum.map(&match(&1))
?
Интересует не с точки зрения производительности, а с точки зрения стилистики и вероятных граблей.
Само значение никогда не бывает списком.
Второй вариант с проверкой is_list
источник

SK

Suren Kirakosyan in pro.elixir
Всё, спасибо, не подумал об этом.
источник

Е

Евгений in pro.elixir
В теории компилятор может оптимизировать такое. Даже возможно в рантайме
источник

SK

Suren Kirakosyan in pro.elixir
Для меня не имеет значение порядок в этом списке, так что хоть спереди, хоть сзади.
источник

Е

Евгений in pro.elixir
V
Второй вариант с проверкой is_list
То есть отдельной функцией.
Насчет гварда is_list, насколько он критичен, если у меня все спеками и диалайзером обмазано?
источник

V

V in pro.elixir
Евгений
То есть отдельной функцией.
Насчет гварда is_list, насколько он критичен, если у меня все спеками и диалайзером обмазано?
Смотри сам по наличию дебилов в команде. Это просто защита от глупости.
источник

YZ

Yura Zhivaga in pro.elixir
Евгений
Вот опять я чешу репу.
Допустим есть некая функция обрабатывающая значение и возвращающая результат:
def match(val) do
И нужно добавить обработку списка значений. Возвращается соответственно список результатов.
Как кошернее, добавить клозу
def match(vals) when is_list(vals), do: Enum.map(&match(&1))
или таки отдельной функцией
def match_list(vals), do: Enum.map(&match(&1))
?
Интересует не с точки зрения производительности, а с точки зрения стилистики и вероятных граблей.
Само значение никогда не бывает списком.
зависит от того, как ты будешь это использовать. Если сделать guard - не надо будет проверять перед вызовом "а список ли это"
источник

Е

Евгений in pro.elixir
V
Смотри сам по наличию дебилов в команде. Это просто защита от глупости.
Ну я один в команде, в данный момент :))))
источник

V

V in pro.elixir
Евгений
Ну я один в команде, в данный момент :))))
Тогда is_list не надо
источник