[erlang-questions] Missing binary BIFs

Robert Raschke <>
Thu Feb 9 12:48:10 CET 2012


Sure, but don't you usually use them in pairs? Just wondering cause
list_to_binary/1 and binary_to_list/1 are not opposites of each other, that
is, binary_to_list(list_to_binary(L)) /= L in general. But I'm guessing
that probably doesn't matter for your use case.

On Thu, Feb 9, 2012 at 11:31 AM, Loïc Hoguin <> wrote:

> 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:erlang-questions@**erlang.org<>
>> >
>>        <mailto:**ang.org <http://erlang.org>
>>        <mailto:erlang-questions@**erlang.org<>
>> >>
>>        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>
>> >
>>
>>        <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:erlang-questions@**erlang.org<>
>> >
>>    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>
>> >
>>
>>
>>
>>
>> ______________________________**_________________
>> erlang-questions mailing list
>> 
>> http://erlang.org/mailman/**listinfo/erlang-questions<http://erlang.org/mailman/listinfo/erlang-questions>
>>
>
>
> --
> Loďc Hoguin
> Erlang Cowboy
> Nine Nines
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20120209/df818d42/attachment.html>


More information about the erlang-questions mailing list