突然、Ruby で printf が書けるかなあーっと思ってみた。 いやそりゃ書けるに決まってるけどな。 どのくらい短かく書けるかなあとか、ちょっと気になったわけだ。 でもよくよく調べると仕様がめんどくさい。簡略版にしておこう。 でも適当に書き散らしていたら (途中で) 満足したので放置して、 次は Haskell に printf (sprintf) があるのか調べてみる。 するとこういうものがあった。
どうやらこいつは Template Haskell というのを使っているようだ。 ようするにあれか。マクロみたいなもんか。
GHC 6 には添付されているらしい。 うちはまだ 5.04 なので、この機会にバージョンを上げておこう。
ああ……やっぱりだめだ、スキップできるほど薄くないや。 うおー気分がのらねー
使いみちがわからない Ruby の仕様と言えばなんたってこれでしょ。
* = 1,2,3
まあたぶん直交性を重視した結果なんだろうけどね。 「a, b, = 1, 2, 3」みたいにカンマで終わるのが嫌だから 「a, b, *dummy = 1, 2, 3」とかしたい。 でも dummy なんて無駄な変数を作ってしまうのも嫌だから省略して 「a, b, * = 1, 2, 3」とできるとさらに嬉しい。 で、これができるなら「* = 1, 2, 3」もできないと直交性が低くなるだろう、 という理屈だな。(たぶん)
あと「こんなもんが書けたのかよ」つながりではこんなのもある。
a = [] [1,2,3].each do |a[1]| p a end