[erlang-questions] Missing binary BIFs

Rapsey <>
Thu Feb 9 09:03:39 CET 2012


I wrote functions that convert between all types that I use constantly.
Much easier to just force a specific type somewhere if you're not sure what
the input type is going to be instead of doing checks everywhere or
annoying conversions like the one you wrote.
It has a dependency on mochinum:digits/1 though.

tolist(<<_/binary>> = P) ->
binary_to_list(P);
tolist(P) when is_atom(P) ->
atom_to_list(P);
tolist(P) when is_integer(P) ->
integer_to_list(P);
tolist(P) when is_float(P) ->
mochinum:digits(P);
tolist(P) when is_list(P) ->
P.

tobin(<<_/binary>> = P) ->
P;
tobin(P) when is_list(P) ->
iolist_to_binary(P);
tobin(P) when is_atom(P) ->
atom_to_binary(P,latin1);
tobin(P) when is_integer(P) ->
tobin(integer_to_list(P));
tobin(P) when is_float(P) ->
tobin(mochinum:digits(P)).

toatom(P) when is_binary(P) ->
binary_to_atom(P,latin1);
toatom(P) when is_list(P) ->
list_to_atom(P);
toatom(P) when is_atom(P) ->
P.
toint(<<_/binary>> = P) ->
list_to_integer(binary_to_list(P));
toint([_|_] = P) ->
list_to_integer(P);
toint(P) when is_integer(P) ->
P;
toint(P) when is_float(P) ->
erlang:round(P).
tofloat(P) when is_integer(P) ->
P / 1;
tofloat(P) when is_float(P) ->
P;
tofloat(P) when is_binary(P) ->
tofloat(binary_to_list(P));
tofloat(P) when is_list(P) ->
Str = string:join(string:tokens(P,","),"."),
case string:str(Str,".") of
0 ->
tofloat(P ++ ".0");
_ ->
list_to_float(Str)
end;
tofloat(P) ->
list_to_float(tolist(P)).


On Wed, Feb 8, 2012 at 7:29 PM, Loïc Hoguin <> wrote:

> Hello,
>
> It feels a bit tedious to keep doing things like
>  list_to_binary(integer_to_**list(42))
>
> or even
>  list_to_binary(atom_to_list(**forty_two))
>
> when we could have convenient integer_to_binary/1 or /2 or atom_to_list/1
> BIFs.
>
> Is there any chance to add them in a future release? With all the
> advantages of binaries it's a shame it's not easier to deal with them.
>
> Thanks.
>
> --
> Loïc Hoguin
> Erlang Cowboy
> Nine Nines
> ______________________________**_________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/**listinfo/erlang-questions<http://erlang.org/mailman/listinfo/erlang-questions>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20120209/f37d22c9/attachment.html>


More information about the erlang-questions mailing list