Matej Kosik wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>> Håkan Stenholm wrote:
>> Matej Kosik wrote:
>>>> You can experiment with the io:format(...) (or io_lib:format(...))
>> string, this works in you case:
>>>> 6> io:format("~2..0w", [2]).
>> 02
>>>> 10> io:format("~2.16.0B", [255]).
>> FF
>>>> These procedures work fine. Reading the manual I was not able to recognize such possibilities. They
> print the term on the terminal in the way I need it.
>> These parameters also kind be used with
>> io_lib:fwrite/2
>> even though its results, for example in these cases:
>> io_lib:fwrite("~2.16.0B", [12]).
>> is weird
>> [["0","C"]]
>> I would expect:
>> ["0C"]
>> Nonetheless the weird returned object seems to behave as the expected string.
io_lib.erl has tendency to create strings similar to io_lists (io_list()
= [char() | binary() | io_list()]), there are efficiency reason for
doing it like this, e.g. appending two strings like ["foo" | "bar"]
during pretty printing formating is O(1) rather than O(N) which "foo" ++
"bar" - which could in some circumstances result in O(N^2) issues.
You might need to use lists:flatten/1 (O(N log N)) if you need a proper
string() - [char()], rather than a nested list of chars and lists.
One reason why io_lib doesn't apply lists:flatten/1 on it's output is
another efficiency consideration - when sending byte streams over
networks or to disk, it is quite simple to traverse the nested (tree)
structure in O(N log N) time* thereby minimizing the amount of
operations needed to process the strings**, this is useful when the data
is mainly intended to be passed on to other processes/servers/users.
* functions/modules that accept io_list() will do this as well
as a number of other io related functions
** you save a O(N) traversal over the flattend string
>> Thank you
> - --
> Matej Kosik
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.6 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org>> iD8DBQFHUaB3L+CaXfJI/hgRApwQAKC8UYMBaWMeKdFQhlMr9Fq+O2t4QQCg1CPb
> cHjy/9B656Xr+FtX935lboE=
> =NFxh
> -----END PGP SIGNATURE-----
>