Size: a a a

2019 September 12

Е

Евгений in pro.elixir
еще странность. запускаю свое приложение:
iex --name hc@localhost -S mix
после чего пытаюсь запустить etop:
erl -s etop -node hc@localhost
источник

Е

Евгений in pro.elixir
не работает:
Error Couldn't connect to node hc@localhost
источник

Е

Евгений in pro.elixir
все на одной машине
источник

V

V in pro.elixir
Евгений
Народ. для этой функции оптимизация хвостовой рекурсии сработает?
def foo([], result), do: result
def foo([h | t], result) do
   case bar(h) do
       {:ok, x} -> foo(t, [x | result])
       :error -> :error
   end
end
Я вот вижу, что она не хвостовая
источник

Е

Евгений in pro.elixir
V
Я вот вижу, что она не хвостовая
Почему?
источник

Е

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

VS

Vladimir Sekisov in pro.elixir
Евгений
еще странность. запускаю свое приложение:
iex --name hc@localhost -S mix
после чего пытаюсь запустить etop:
erl -s etop -node hc@localhost
localhost - невалидный домен, используйте адрес или localhost.localdomain, если прописан и имя ноды с etop
не забудьте
```
erl -name etop@127.0.0.1 -s etop -node hc@127.0.0.1
```
источник

Е

Евгений in pro.elixir
Vladimir Sekisov
localhost - невалидный домен, используйте адрес или localhost.localdomain, если прописан и имя ноды с etop
не забудьте
```
erl -name etop@127.0.0.1 -s etop -node hc@127.0.0.1
```
да, так и сделал localhost.localdomain использовал и добавил -name параметр для erl
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
V
Я вот вижу, что она не хвостовая
{:function, :foo, 2, 10,
   [
     {:line, 2},
     {:label, 9},
     {:func_info, {:atom, Foo}, {:atom, :foo}, 2},
     …
     {:call_last, 2, {Foo, :foo, 2}, 2},
     …
     {:case_end, {:x, 0}}
   ]}


{:call_last, 2, {Foo, :foo, 2}, 2}


call в foo из case-а - так как это последнее, что происходит вызывает call_last инструкцию, которая:

Deallocate words on stack and does a tail recursive call (jump) to the function at Label. Does not update the CP register with a return address, making return bypass current code location.
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Евгений
Почему?
Здесь однозначно TCO.
источник

V

V in pro.elixir
Dmitry Russ (Aleksandrov)
{:function, :foo, 2, 10,
   [
     {:line, 2},
     {:label, 9},
     {:func_info, {:atom, Foo}, {:atom, :foo}, 2},
     …
     {:call_last, 2, {Foo, :foo, 2}, 2},
     …
     {:case_end, {:x, 0}}
   ]}


{:call_last, 2, {Foo, :foo, 2}, 2}


call в foo из case-а - так как это последнее, что происходит вызывает call_last инструкцию, которая:

Deallocate words on stack and does a tail recursive call (jump) to the function at Label. Does not update the CP register with a return address, making return bypass current code location.
Ок, видимо этот случай оптимизируется.
А что это за анализ и как его получить?
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
V
Ок, видимо этот случай оптимизируется.
А что это за анализ и как его получить?
Любой случай, где последним что происходит - это вызов функции оптимизируется.
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
V
Ок, видимо этот случай оптимизируется.
А что это за анализ и как его получить?
:beam_disasm.file(beam)


dissasemble кода до инструкций.
источник

V

V in pro.elixir
Dmitry Russ (Aleksandrov)
Любой случай, где последним что происходит - это вызов функции оптимизируется.
Я про case :error -> :error
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
V
Я про case :error -> :error
А здесь зачем TCO, если код здесь все равно остановился? Тут никакие оптимизации не нужны.
источник

IK

Ihor Katkov in pro.elixir
ребятки
источник

IK

Ihor Katkov in pro.elixir
кто будет учавствовать в SpawnFest в этом году?
источник

IK

Ihor Katkov in pro.elixir
у меня есть парочка идей вокруг алго трейдинга, может кому будет интересно присоеденится
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Алкотрейдинг?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
источник