2007/05/07

Erlang io の引数に lists:flatten は必要ない

io_lib:format/2 の返り値が、単なる文字列ではなく、文字と文字列のリストになるのは不便なのに何故だろう、と思っていました。
ふとしたことで文字と文字列のリストそのままで出力できることに気づきました。
lists:flatten はいらないのですね。
file:write_file/2 でもネストしたリストそのままで大丈夫でした。


49> io_lib:format("Hello ~s!~n", ["World"]).
[72,101,108,108,111,32,"World",33,"\n"]
50> io:format([72,101,108,108,111,32,"World",33,"\n"]).
Hello World!
ok

そういえば、次のようなのもOKなんですよね。

51> "Hello" " " "World" "!\n".
"Hello World!\n"

2 件のコメント:

Rui Ueyama さんのコメント...

そういう文字のネストしたリストのことをdeep stringということがあるようです。

Yoshinori Tahara さんのコメント...

rui さん情報ありがとうございました。