Size: a a a

2020 August 27

ŹR

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

ŹR

Źmićer Rubinštejn in pro.elixir
Тока хвостовая рекурсия не обязательно с аккумулятором
источник

Е

Евгений in pro.elixir
Źmićer Rubinštejn
Рекурсия с аккумулятором естественно меденнее чем обычная, типа в этом кто-то сомневался
Конечно сомневался. С хера ли оно должно быть медленее?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
А про перебор мапы чет не верится
источник

LL

Lama Lover in pro.elixir
Ну тут не про body vs tail а про то что в BEAM есть оптимизация, где функция f возвращает список [some_value | f(args)]
источник

Е

Евгений in pro.elixir
Źmićer Rubinštejn
А про перебор мапы чет не верится
Ты наверное забыл. В этом чятике была длинная дискусия, про Enum.map, который преобразует мапу в список, бенчи делали со странными результатами.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Евгений
Конечно сомневался. С хера ли оно должно быть медленее?
Потому что нету дополнительной промежуточной структуры данных для хранения)
источник

Е

Евгений in pro.elixir
Źmićer Rubinštejn
Потому что нету дополнительной промежуточной структуры данных для хранения)
ну это видимо только в erlang так
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Всмысле? Ты в ручную создаёшь «переменную» в которой что-то там хранишь между рекурсивными вызовами.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
А body recursion композит returnы
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Поэтому там может закончится стек )
источник

Е

Евгений in pro.elixir
Źmićer Rubinštejn
Всмысле? Ты в ручную создаёшь «переменную» в которой что-то там хранишь между рекурсивными вызовами.
Хвостовая рекурсия вырождается в обычный цикл, который всяко должен быть быстрее рекурсии. Так как ненадо в стек пихать
источник

LL

Lama Lover in pro.elixir
Źmićer Rubinštejn
Рекурсия с аккумулятором естественно меденнее чем обычная, типа в этом кто-то сомневался
Хвостовая рекурсия с аккумулятором будет быстрее, чем рекурсия, которая аппендит в конец списка
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Lama Lover
Хвостовая рекурсия с аккумулятором будет быстрее, чем рекурсия, которая аппендит в конец списка
Так она не аппендит в конец списка)) она каждый раз аппендит в начало списка
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Так ещё и ее разворачивать не надо
источник

LL

Lama Lover in pro.elixir
Źmićer Rubinštejn
Так она не аппендит в конец списка)) она каждый раз аппендит в начало списка
Аппендить в начало в рекурсии — это оптимизация в BEAM
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Lama Lover
Хвостовая рекурсия с аккумулятором будет быстрее, чем рекурсия, которая аппендит в конец списка
Напиши map на body recursion и посмотри куда оно аппендит
источник

PG

Pig Greenest in pro.elixir
иолисты крута
источник

Е

Евгений in pro.elixir
Я хз, в случае хвостовой рекурсии положи параметры туда же в память где они были изначально и сделай безусловный переход в начало. Обычная рекурсия: увеличь стек, положи в него новые параметры, да еще и адрес возврата и сделай вызов функции.
источник

LL

Lama Lover in pro.elixir
Евгений
Я хз, в случае хвостовой рекурсии положи параметры туда же в память где они были изначально и сделай безусловный переход в начало. Обычная рекурсия: увеличь стек, положи в него новые параметры, да еще и адрес возврата и сделай вызов функции.
Только вот в биме нет стека
источник