[erlang-questions] Missing binary BIFs

Loïc Hoguin <>
Thu Feb 9 12:31:57 CET 2012


Those encode the term in the Erlang term format, which has a very 
particular purpose. The functions I'm talking about are just conversion 
from one type to binary strings.

On 02/09/2012 12:29 PM, Robert Raschke wrote:
> Are you guys sure you're not looking for term_to_binary/1 and
> binary_to_term/1 ?
>
> On Thu, Feb 9, 2012 at 10:27 AM, Loïc Hoguin <
> <mailto:>> wrote:
>
>     While seemingly practical, I'm not sure why I would want any place
>     in my code where I wouldn't be sure what the input type is. Even
>     with dialyzer checks I'm sure I would make false assumptions and get
>     surprises here and there.
>
>     I also would like an efficient solution, both in processing speed
>     and memory use. Converting to list then binary isn't that great,
>     even less so after module:function calls with guards.
>
>
>     On 02/09/2012 09:03 AM, Rapsey wrote:
>
>         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 <
>         <mailto:>
>         <mailto: <mailto:>>> 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
>          <mailto:>
>         <mailto:
>         <mailto:>>
>         http://erlang.org/mailman/____listinfo/erlang-questions
>         <http://erlang.org/mailman/__listinfo/erlang-questions>
>         <http://erlang.org/mailman/__listinfo/erlang-questions
>         <http://erlang.org/mailman/listinfo/erlang-questions>>
>
>
>
>
>     --
>     Loïc Hoguin
>     Erlang Cowboy
>     Nine Nines
>     _________________________________________________
>     erlang-questions mailing list
>      <mailto:>
>     http://erlang.org/mailman/__listinfo/erlang-questions
>     <http://erlang.org/mailman/listinfo/erlang-questions>
>
>
>
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions


-- 
Loïc Hoguin
Erlang Cowboy
Nine Nines



More information about the erlang-questions mailing list