[erlang-questions] Missing binary BIFs
Loïc Hoguin
essen@REDACTED
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 <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>>> 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>>
> 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>
> http://erlang.org/mailman/__listinfo/erlang-questions
> <http://erlang.org/mailman/listinfo/erlang-questions>
>
>
>
>
> _______________________________________________
> 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