2007-05-21
■高階関数の件
(tDiaryがタイムアウトしてしまったので、こちらで追記)
http://www.rubyist.net/~matz/20070512.html#p04
あと、一般に(広い意味で)何らかの言語の抽象構文みたいに、複数のコンストラクタを持つユーザ定義データ型に対するイテレータ(fold)は複数の関数引数が必須なので、ライブラリだけ調べるより、むしろfunctional pearlなどを見たほうが…
レコードやstructureでまとめるにせよ、(たとえばRubyだったら)ブロックがそのままでオブジェクトになっていれば、さらに楽になるかと思いました。少し違いますが、SchemeではLispのfuncallがいらない、みたいな。
追記:まだtDairyのコメントがタイムアウトします。;_; リロードすると投稿できているようですが。
「ブロックを二つ書く」というのは、たとえばif文をboolのメソッドにしてthen節とelse節を渡したり(?)とか、一般にコンストラクタが複数のデータ型(boolはtrueとfalseの二つ)に対する制御構造を記述したりとか、そういう話です。そうしたほうが良いと言っているわけでは必ずしもなくて、もしそうしても既存の文法に影響はないのでは、という思考実験として。
追記2:とりあえずRubyソースコードのparse.yだけ改造して、
data = [1, 2, 3]
data.each { |i|
  print i, "\n"
} { |i|
  print i, "\n"
} { |i|
  print i, "\n"
}
			が構文解析だけできるようにしてみました(意味なし)。普通のmake testもバッチリ(死語)です。生まれて初めて書いたRubyプログラムです!(←だからRubyプログラムになってないってば) でも、この変更だけなら一分でできたので(method_callなどの直後のbrace_blockを複数にしただけ)、やっぱり何が難しいのかよくわからない…。単数の場合にも影響していないし。何か見落としているのだろうか。
■[雑談]テレビ
最近、帰宅すると某占星術師やスピリチュアルカウンセラーや超能力捜査などの番組が目白押しです。他の多くの人と同じく、はじめは僕もなんじゃこりゃーと思っていたのですが、悟りました。これは作る人も見る人も確信犯*1で、何を言っても逆効果なので、とにかくひたすらネタにすべきです(「水商売」系書籍なども同様)。でも私はセンスがないので考え中。