Size: a a a

2020 August 26

P

Pavel in pro.elixir
ээээм, а как чуваки делали reduce_while без throw?
источник

P

Pavel in pro.elixir
там же вариантов то не сильно много остается если ты хочешь заранее выйти
источник

LL

Lama Lover in pro.elixir
Pavel
ээээм, а как чуваки делали reduce_while без throw?
Я думаю писали отдельную рекурсивную функцию
источник

PG

Pig Greenest in pro.elixir
так же, как и всегда
источник

P

Pavel in pro.elixir
какой ужас
источник

VS

Vladimir Sekisov in pro.elixir
Pig Greenest
да, очень странно что ребята, которые придумывали with, не догадались посмотреть как это сделано в других языках или хотя бы в их собственном
по-моему как раз посмотрели,
им очень хотелось do
синтаксис из Haskell
для bind, но без bind,
как могли, не ломая язык ради одного оператора,
так и сделали, по другому
врядли получится.
источник

Е

Евгений in pro.elixir
Lama Lover
Поздравляю, ты придумал throw catch
Кек, реально никаких отличий от обычных эксепшенов получается :))
источник

AB

Alex Bubnov in pro.elixir
Pig Greenest
with do
 # разрешены все обычные выражения
 res = foo(...)
 # дополнительно такие формы со стрелкой
 # если матчинг не прошел, отправляемся в else
 {:ok, val} <- bar(res, ...)
 # возвращается последнее выражение
 ololo(val)
else
 # разбор ошибочек, как и в стандартном with
 {:error, _} -> ...
end
так напиши, чего жаловаться
по идее, должно быть не запредельно сложно
источник

PG

Pig Greenest in pro.elixir
будет как с result, никто не захочет тащить такое в проект
источник

AB

Alex Bubnov in pro.elixir
warning: the Collectable protocol is deprecated for non-empty lists. The behaviour of things like Enum.into/2 or "for" comprehensions with an :into option is incorrect when collecting into non-empty lists. If you're collecting into a non-empty keyword list, consider using Keyword.merge/2 instead. If you're collecting into a non-empty list, consider concatenating the two lists with the ++ operator.
это еще что за фигня
источник

AB

Alex Bubnov in pro.elixir
если кто-то что-то знает, расскажите?
источник

AB

Alex Bubnov in pro.elixir
причем чсх Enum.into/3 не говорит ничего про deprecation, и это меня удивляет больше всего
источник

PG

Pig Greenest in pro.elixir
o_O
источник

AB

Alex Bubnov in pro.elixir
вот да. по логике, Enum.into(src, dst) это просто Enum.into(src, dst, &(&1))
мне теперь искренне интересно, что же они там сотворили такое
источник

AB

Alex Bubnov in pro.elixir
ой
источник

AB

Alex Bubnov in pro.elixir
  def into(enumerable, collectable, transform) when is_list(collectable) do
   collectable ++ map(enumerable, transform)
 end


а почему в хвост-то?..
источник
2020 August 27

ev

eugene vikulov in pro.elixir
А почему бы нет? Явно обозначат этот момент в документации и всё
источник

PG

Pig Greenest in pro.elixir
потому что это может быть медленно
источник

AB

Alex Bubnov in pro.elixir
eugene vikulov
А почему бы нет? Явно обозначат этот момент в документации и всё
потому что никто в beam по дефолту не расширяет списки в хвост? ну то есть, для здорового человека наименее неожиданным будет расширение списка с головы, опять же по дефолту. кому нужно - сам явно напишет расширение в хвост.
источник

ev

eugene vikulov in pro.elixir
Alex Bubnov
потому что никто в beam по дефолту не расширяет списки в хвост? ну то есть, для здорового человека наименее неожиданным будет расширение списка с головы, опять же по дефолту. кому нужно - сам явно напишет расширение в хвост.
согласен. пардон, не подумал. я так понимаю фрагмент кода выше вы взяли из репозитория elixir на github, а значит никто не мешает создать issue
источник