しばらく忙しくてRubyをいじってなかったが、今日はちょっと作業できた。
やったこと。
object.c (Init_Object): remove Kernel#to_a.
使うと警告が出ていたObject#to_aを削った。
eval.c: remove specialized version of rb_Array(). use simple one defined in object.c.
Object#to_aを特別扱いしていたrb_Array()の定義を削って、 object.cにあるすなおな定義(ifdef outされていた)を使うようにした。
enum.c (enum_zip): use "to_a" instead of "to_ary".
引数を配列に変換する時、to_aを使うようにした。
eval.c (proc_eq): avoid false positive by using scope and dyna_vars. no longer use frame.uniq.
空Procが違う場所なのに==が真になるケースがあった。チェック条件をより正しく。
eval.c (proc_arity): arity is now defined as number of parameters that would not be ignored. i.e. Proc.new{}.arity returns zero. update test suites too.
arityというのは「渡してもエラーにならない引数の数」のつもりだったのだが、 「無視されない(パラメータとして受けとった)引数の数」ということにした。 これにより Proc.new{}.arity は -1 でなく 0 になる。
これでRuby2に一歩(半歩)だけ近づいたな。
以前考えていたGCアルゴリズムだが、 ブロックを生成するとローカル変数から参照されているオブジェクト全部に参照マークが付いて 効率が上がらないことが判明していた。 が、リターン時にlazyにマークをつければ効率はそんなに下がらない(はず)。 いかんせん思いついたのが遅すぎた。発表申し込みの〆切は明日だ。
今回はあきらめるしかないか。
長女の小学校の卒業式に参加する。 もうそんなになるのか。
なかなか気持ちのいい式であった。 ビデオに撮ったのだが、あとで見返すことがあるのだろうか。
しかし、今日は寒く、会場も凍えるようであった。 おかげで妻は風邪を引いてしまったようだ。 たいしたことにならずにすめばよいのだが。
英語版「Rubyist Magazine」とでもいうべき、 『Ruby Code & Style』の最新記事。 こちらは「るびま」と違って、 単発の記事を増やしていくスタイルらしい。
「Creating DSLs with Ruby」は、数少ないRuby Conference皆勤者でもあるJim Freezeによる。
RubyがDSLにいかに向いているか、とか、RubyをDSLっぽく使うには、とか、そんな感じ。
引っ越しするかもしれないんで、片づけ。 いらない本とか雑誌とかを処分。
だいぶ一生懸命作業したのに、全然減ってない。 もうちょっと大胆にものを捨てることを考えないと駄目みたい。 っていうか、うちの家人の性格だと、もはやあまり狭い家には住めないってことか? そういえば、うちの実家も何年もの荷物がたまりにたまっていたものなあ。
高校時代にイオンクラフトを作るために古いテレビを探したら、 倉庫から使ってない白黒テレビが5台も見つかったし。
話をお願いしていた人が都合が悪かったりしたので、 私にも聖餐会で話してほしいということで、 それなりに準備していたのだが、 急にできるようになった人がいたりして、 結局、私の話はなくなった。
ほっとしたような、残念なような。
Google社内のシステム。 英語でもうちょっと詳しい記事を読んだ覚えがあるんだが、 URLを失念しちゃった。
で、最近、Ruby開発支援サイトを改良したいと言う欲求があるんだが、 単にTracとかRedMineとかRetrospectivaを導入するだけじゃなくて、 コードレビューとか投票とかも連携したいなあなんて思ってるんだけど、 そういうのって上記のツールでできるんだっけか。
通常の言語を使ってPrologのようなユニフィケーションを行うってのは よくある発想だけど、こっちは逆。Prolog上で手続き型っぽい言語を実装するという話。
意外と簡単にできるもんだな。
私はその手のツールに弱いんで、全貌を完全に把握することはできないんだけど、 これはたぶんすごいことなんだと思う。グラフィカルに定義したものが そのまま動くんだから。
私の最初の職場で本当に役に立つかよくわからないCASEツールを作っていた 同僚たちもこれを見たら草葉の陰で涙を流すかもしれない。 まだ死んでないけど。
新言語Kite。
なんとなく「ひっくり返った」印象を与える。
{ value|print; }|for(1|range(10));
これで1から10まで出力するんだそうだ。
これは「|」がメッセージセンドであると解釈する、つまり
と解釈するようだ。keyとかvalueとかは決め打ちのようだ。
長女の高校の合格発表。
最近はネットでチェックできるのね。 合格してた。
中学校の同級生で同じ高校を受験した人は全員合格していたそうだ。 喜ばしいことなんだろうが、 少子化による競争の低下を目の当たりにしたような気がする。
「ゆとり」以前にそっちが問題だろう。