Я познакомился с Эрланом Армстронгами «Программирование Эрланг». Одно упражнение - написать повторную реализацию tuple_to_list/1 BIF. Мое решение кажется мне неэлегантным, особенно из-за вспомогательной функции, которую я использую. Есть ли еще Erlang-ish способ сделать это?Erlang: элегантный tuple_to_list/1
tup2lis({}) -> [];
tup2lis(T) -> tup2list_help(T,1,tuple_size(T)).
tup2list_help(T,Size,Size) -> [element(Size,T)];
tup2list_help(T,Pos,Size) -> [element(Pos,T)|tup2list_help(T,Pos+1,Size)].
Большое спасибо за ваши идеи. :)
Будьте в курсе, какой из нижеприведенные реализации являются хвостовыми рекурсивными. – Tilman
Нет ничего плохого в том, что у вас есть вспомогательные функции, часто они вам нужны, и они - лучший способ сделать что-то. И не беспокойтесь о хвостовой рекурсии, см. Http://www.erlang.org/doc/efficiency_guide/listHandling.html#id64720 – rvirding