Juntando-se a uma lista de binários em Erlang

O binarymódulo fornece uma maneira fácil de dividir binários usando split/2,3, mas e se você quiser juntar uma lista de binários novamente?

-spec binary_join([binary()], binary()) -> binary().
binary_join
([], _Sep) ->
<<>>;
binary_join
([Part], _Sep) ->
Part;
binary_join
(List, Sep) ->
lists
:foldr(fun (A, B) ->
if
bit_size
(B) > 0 -> <<A/binary, Sep/binary, B/binary>>;
true -> A
end
end, <<>>, List).

Funciona exatamente como você espera:

binary_join([<<"Hello">>, <<"World">>], <<", ">>) % => <<"Hello, World">>
binary_join
([<<"Hello">>], <<"...">>) % => <<"Hello">>

Espero que você ache isso útil!