Size: a a a

2020 May 24

AA

Alex A in pro.elixir
Lama Lover
def my_func(0), do: nil
def my_func(arg) do
 ...
end
спасибо
источник

AA

Alex A in pro.elixir
В эликсире нехило так рекурсия поддерживается. Написал прогу для проверки, простое ли число, на основе рекурсии. Находит простые числа порядка 10^17, то есть глубина стека порядка 10^8. Видимо, хорошо оптимизируется хвостовая рекурсия
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Alex A
В эликсире нехило так рекурсия поддерживается. Написал прогу для проверки, простое ли число, на основе рекурсии. Находит простые числа порядка 10^17, то есть глубина стека порядка 10^8. Видимо, хорошо оптимизируется хвостовая рекурсия
Хвостовая рекурсия либо оптимизируется либо нет)
источник

AA

Alex A in pro.elixir
Руби MRI сдохло на 10^8
источник

AA

Alex A in pro.elixir
Раст сдох на 10^10
источник

AA

Alex A in pro.elixir
видимо, там не оптимизируется
источник

АЮ

Андрей Юнми... in pro.elixir
С хвостовой рекурсией у тебя же не кладётся всё больше на стек с новым вызовом.
источник

AA

Alex A in pro.elixir
ну да, я понимаю
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Alex A
видимо, там не оптимизируется
Именно поэтому на втором уроке по компам учат менять рекурсию на циклы и наоборот
источник

LL

Lama Lover in pro.elixir
Андрей Юнми
С хвостовой рекурсией у тебя же не кладётся всё больше на стек с новым вызовом.
В elixir любая рекурсия оптимизируется. Тут не Tail Call Optimization а Last Call Optimization (если я не ошибся в терминах)
источник

АЮ

Андрей Юнми... in pro.elixir
Lama Lover
В elixir любая рекурсия оптимизируется. Тут не Tail Call Optimization а Last Call Optimization (если я не ошибся в терминах)
Буду знать.)
источник

АЮ

Андрей Юнми... in pro.elixir
источник
2020 May 25

V

V in pro.elixir
Котаны, а кто использовал кастомные ecto-типы (Ecto.Type) в запросах?
Например
defmodule Player do
 schema "players" do
   field(:id, :integer)
   field(:gender, Gender)
 end
end

defmodule Gender do
 use Ecto.Type
 def cast(:male), do: 1
 def cast(:female), do: 2
 def load(1), do: :male
 def load(2), do: :female
end

query = from p in Player,
   where: p.gender = ???
   select: p
Что указать вместо ???? Варианты :male и 1 не работают. Доки читал, книжки скачивал, у гугла спрашивал, все молчат.
источник

PG

Pig Greenest in pro.elixir
А там не p.gender должен быть?
источник

V

V in pro.elixir
да, поправил
источник

VS

Vladimir Sekisov in pro.elixir
у вас тип неполный,
нет функции dump
источник

AR

Andrew Rudenko in pro.elixir
Lama Lover
В elixir любая рекурсия оптимизируется. Тут не Tail Call Optimization а Last Call Optimization (если я не ошибся в терминах)
в приведенной ссылке (https://erlang.org/pipermail/erlang-questions/2016-October/090663.html) Joe сравнивает термины Tail recustion с Last Call Optiomization. В чем отличие от общеупотребительного TCO я так и не понял, так что зачем он изобрел свою терминологию тоже не оч понятно )
источник

AB

Alexey Bolshakov in pro.elixir
кстати, для информации, в ерланг tail recursion не всегда быстрее, как это может подуматься на первый взгляд, после компилируемых языков.
источник

AR

Andrew Rudenko in pro.elixir
Alex A
видимо, там не оптимизируется
не "видимо", это важные и эксплицитное свойство языка, ни раст, ни руби не оптимизируют, да. в эликсире этим не компилятор языка занимается, а компилятор байткода (т.е. beam)
источник

AR

Andrew Rudenko in pro.elixir
Alexey Bolshakov
кстати, для информации, в ерланг tail recursion не всегда быстрее, как это может подуматься на первый взгляд, после компилируемых языков.
не всегда быстрее чего?
источник