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.<div>
It has a dependency on mochinum:digits/1 though.<div><br></div><div><div>tolist(<<_/binary>> = P) -></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>binary_to_list(P);</div><div>tolist(P) when is_atom(P) -></div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>atom_to_list(P);</div><div>tolist(P) when is_integer(P) -></div><div><span class="Apple-tab-span" style="white-space:pre">    </span>integer_to_list(P);</div>
<div>tolist(P) when is_float(P) -></div><div><span class="Apple-tab-span" style="white-space:pre">       </span>mochinum:digits(P);</div><div>tolist(P) when is_list(P) -></div><div><span class="Apple-tab-span" style="white-space:pre">    </span>P.</div>
<div><br></div><div>tobin(<<_/binary>> = P) -></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>P;</div><div>tobin(P) when is_list(P) -></div><div><span class="Apple-tab-span" style="white-space:pre">      </span>iolist_to_binary(P);</div>
<div>tobin(P) when is_atom(P) -></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>atom_to_binary(P,latin1);</div><div>tobin(P) when is_integer(P) -></div><div><span class="Apple-tab-span" style="white-space:pre">    </span>tobin(integer_to_list(P));</div>
<div>tobin(P) when is_float(P) -></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>tobin(mochinum:digits(P)).</div><div><br></div><div>toatom(P) when is_binary(P) -></div><div><span class="Apple-tab-span" style="white-space:pre">  </span>binary_to_atom(P,latin1);</div>
<div>toatom(P) when is_list(P) -></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>list_to_atom(P);</div><div>toatom(P) when is_atom(P) -></div><div><span class="Apple-tab-span" style="white-space:pre">       </span>P.</div>
<div>toint(<<_/binary>> = P) -></div><div><span class="Apple-tab-span" style="white-space:pre">      </span>list_to_integer(binary_to_list(P));</div><div>toint([_|_] = P) -></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>list_to_integer(P);</div>
<div>toint(P) when is_integer(P) -></div><div><span class="Apple-tab-span" style="white-space:pre">      </span>P;</div><div>toint(P) when is_float(P) -></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>erlang:round(P).</div>
<div>tofloat(P) when is_integer(P) -></div><div><span class="Apple-tab-span" style="white-space:pre">    </span>P / 1;</div><div>tofloat(P) when is_float(P) -></div><div><span class="Apple-tab-span" style="white-space:pre">       </span>P;</div>
<div>tofloat(P) when is_binary(P) -></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>tofloat(binary_to_list(P));</div><div>tofloat(P) when is_list(P) -></div><div><span class="Apple-tab-span" style="white-space:pre">   </span>Str = string:join(string:tokens(P,","),"."),</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>case string:str(Str,".") of</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>0 -></div><div><span class="Apple-tab-span" style="white-space:pre">                      </span>tofloat(P ++ ".0");</div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span>_ -></div><div><span class="Apple-tab-span" style="white-space:pre">                      </span>list_to_float(Str)</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>end;</div>
<div>tofloat(P) -></div><div><span class="Apple-tab-span" style="white-space:pre">       </span>list_to_float(tolist(P)).</div><div><br><br><div class="gmail_quote">On Wed, Feb 8, 2012 at 7:29 PM, Loïc Hoguin <span dir="ltr"><<a href="mailto:essen@ninenines.eu">essen@ninenines.eu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br>
<br>
It feels a bit tedious to keep doing things like<br>
  list_to_binary(integer_to_<u></u>list(42))<br>
<br>
or even<br>
  list_to_binary(atom_to_list(<u></u>forty_two))<br>
<br>
when we could have convenient integer_to_binary/1 or /2 or atom_to_list/1 BIFs.<br>
<br>
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.<br>
<br>
Thanks.<span class="HOEnZb"><font color="#888888"><br>
<br>
-- <br>
Loïc Hoguin<br>
Erlang Cowboy<br>
Nine Nines<br>
______________________________<u></u>_________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/<u></u>listinfo/erlang-questions</a><br>
</font></span></blockquote></div><br></div></div></div>