Diary?::2006-02-09

01:36

自分達が楽しいって事は、他の人達にとっては詰まらないかもしれないって事なんじゃねーの? 別にこれは難しい話でもなんでもなくて、単純な趣味嗜好の違いに落とし込める話。

俺が大嫌いな物の一つに、自分にとっての楽しいと他人にとっての楽しいの区別が付いていない奴ってのがある。そういう連中が何をするかというと、趣味を押しつけたり宗教の勧誘をしてきたり、そうして俺が拒否すると人でなしのような扱いをしてさらにゴリ押しをして。

くだらねえ消耗戦。

俺は最近になってこの戦いには勝者など存在せず、終わりも存在せず、ただ全員が永遠に負けつづけるということを自覚せざるを得なくなった。この手のバカに絡まれた場合は、相手の面に唾を吐きかけて中指を突き立て、ゲームから降りるのが一番利口な方法だ。でももしそれが通用しない相手だったら? 例えば自分の親とか? 相手が最悪のバカで無い限りは、十年ぐらい戦えば休戦に持ち込めるかもしれない。

俺は最近、ようやく休戦状態に持ち込んだ。払った犠牲はあまりに多い。

もしも自分が何かを信じているのなら、何かを楽しんでいるのなら、その影に何が犠牲になっているのかについてもう少し自覚的でもいいんじゃないか?

10:10

Opera 9.0 の TP 2 が出てたので、インストールしてみたんだが。

なんでフォントの設定が元に戻ってるんだくそったれ。あと相変わらずサイトによっては文字がずれて被ってしまうなど、どうにも表示がオカシイ。

Javascript の実行などをドメインごとに設定できるようになったり、 BitTorrent に対応したりと確かに機能は充実しているのだが。

あと設定周り (主にフォントの設定) のインターフェースが終わっているのも相変わらずなので、やはり気軽に勧められないブラウザだな。

12:34

Python の場合、実質的にはタプルで戻してアンパックなのでそれを多値といっていいものやらちょっと迷う。

def f(x, y, z):
	return x+y, y+z, x+z

a, b, c = f(3, 2, 1) # a=5, b=3, c = 4
x = f(3, 2, 1) # x = (5, 3, 4)

これはこれで柔軟でいいのかもしれないけれど、以下のような問題 (?) が起こってしまうのも事実。

def f2(x, y, z):
	return x+y+z

f2(f(3, 2, 1)) # エラー!
f2(*f(3, 2, 1)) # アンパックすれば OK

a, b, c = f(args) みたいな形でしか受け取れなくなるような仕組があれば解決するのだけど、それって混乱を招かないかなとも思ったり。難しい所だ。

というかね、これが fop の compose() で問題になっているんだよ (タプルで戻ってくるので素直に m in n out な関数をチェインできない)。いっそタプルで戻ってきたら全部アンパックしちまおうか。タプルで戻す場合ってのは、ほぼ確実にあらかじめ要素数が固定だろうからさ。

しかし多値関数ってそんなに不自然なものかな? 俺はわりと自然なものだと思うというか、 m in n out じゃないと対称性が取れてなくて少し気持ち悪い。 Python 方式でもいいから、 a, b, c... = f(args...) って感じで書きたいよ。でもこれは俺の趣味だしな。やっぱ多値関数は不自然なのか?

ところで Haskell での多値の扱いは…… Python と一緒でタプルで返すことになってるっぽい。

main = print $ f3 $ f1 3 2 1
f1 a b c = (a+b, b+c, c+a)
f2 a b c = a+b+c
unpacked f (a, b, c) = f a b c
f3 = unpacked f2

Haskell はちょっとかじった程度なんでこれでいいのか不明だけど、これしか思い付かん。でもこれはこれでいいような気もする。

あ。ってことは Python でもいけるじゃん。

from frop import *
def unpacked(f):
	def _unpack(arg):
		return f(*arg)
	return _unpack

compose(f1, unpacked(f2))(3, 2, 1)

これで解決だ。

あれ? なんか脱線しているような。まあいいや、気にしない。

17:55

Opera 9 TP 2 では Ctrl+Shift+V で "Go to URL" が出来なくなっているようだ。というか設定項目から削除されてるっぽい? これは困ったな。

19:54

過去ログ検索の致命的なバグを修正。

22:06

はてな RSS のアンテナモード、ちょっと微妙な気が。現状の実装はアンテナ+記事タイトルの表示って感じなのだけど、俺としてはせめて description まで表示して欲しいかな (content:encoded は別にいいや)。

23:28

自前のユニットテストフレームワークをアップデート。それに伴って過去に書いたテストケースを書き直す必要が出てきてしまった。まあ仕方がないか。まだ機能が足りていないけど、標準モジュールの unittest よりは気に入っている。具体的には、テストの実行条件をデコレータで書ける所とか。

さて、問題はドキュメントを書くのが面倒臭いということなのだが。山ほどサンプルコード付けるから、ドキュメントは最低限でいいかなあ。

っていうか俺以外に使う奴がいるのかこれ?

Written by Kuwata Chikara
Creative Commons