Скажем, у меня есть этот код здесь:
do_recv_loop(State) ->
receive
{do,Stuff} ->
case Stuff of
one_thing ->
do_one_thing(),
do_recv_loop(State);
another_thing ->
do_another_thing(),
do_recv_loop(State);
_ ->
im_dead_now
end
{die} -> im_dead_now;
_ -> do_recv_loop(State)
end.
Теперь теоретически это хвостовое рекурсивно, так как ни один из трех вызовов do_recv_loop не требует возврата. Но признает ли erlang, что это хвост рекурсивный и оптимизирован соответствующим образом? Я обеспокоен тем, что вложенная структура может не распознать ее.