The two functions, to_float/1 and to_integer/1, in string are seriously broken as they don't raise an error on wrong type of input data but return an error value. This is inconsistent with the rest of the string module and most other module in the standard libraries. The norm is that bad input data is considered an error. I know it is documented but that just makes it a documented bug. They should be either changed or removed. Or the rest of string changed to be consistent.<br>
<br>I personally think that these functions anyway should not be in string, io or io_lib is a better place for them. Should there be a string:to_atom which parses its input string and returns the atom which may be at the beginning of the string. Sorry for being sarcastic they *are* very weird functions.<br>
<br>I would also debate the error return if there is no integer or float, the user should know what they are doing. Also returning an {error,E} tuple and not an {ok,I,Rest} tuple is completely inconsistent, both should be tagged. As it now you cannot just matched against the success case:<br>
<br>{Int,Rest} = string:to_integer(String)<br><br>but must use a case as both tuples are the same size and only one is tagged. This also breaks a common idiom.<br><br>In all these functions cannot be considered as anything other than mis formed bugs.<br>
<br>Robert<br><br>