[erlang-questions] Missing binary BIFs
Loïc Hoguin
essen@REDACTED
Thu Feb 9 12:51:35 CET 2012
Hm I would be very surprised if binary_to_list(list_to_binary(L)) /= L
wouldn't be true. Do you have an example of this?
On 02/09/2012 12:48 PM, Robert Raschke wrote:
> 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 <essen@REDACTED
> <mailto:essen@REDACTED>> 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 <essen@REDACTED
> <mailto:essen@REDACTED>
> <mailto:essen@REDACTED <mailto:essen@REDACTED>>> 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
> <essen@REDACTED <mailto:essen@REDACTED>
> <mailto:essen@REDACTED <mailto:essen@REDACTED>>
>
> <mailto:essen@REDACTED <mailto:essen@REDACTED>
> <mailto:essen@REDACTED <mailto:essen@REDACTED>>>> 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
> erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
> <mailto:erlang-questions@REDACTED
> <mailto:erlang-questions@REDACTED>>
> <mailto:erlang-questions@
> <mailto:erlang-questions@>__erl__ang.org <http://erlang.org>
> <mailto:erlang-questions@REDACTED
> <mailto:erlang-questions@REDACTED>>>
> 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
> erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
> <mailto:erlang-questions@REDACTED
> <mailto:erlang-questions@REDACTED>>
> 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
> erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
> 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
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
--
Loïc Hoguin
Erlang Cowboy
Nine Nines
More information about the erlang-questions
mailing list