2008-08-01から1ヶ月間の記事一覧

カリー化デコレータ

Python のデコレータはなかなか面白い機能だと思ったので、試しにカリー化を実装してみました。 @curry def f(x,y,z): ... などと書くと、カリー化されたfが定義されます。まぁ functools.partial があれば全然必要無いシロモノではあるのですが。 複数まと…

考えてみてくださいとかいいつつ

コレ result = HogeX.invoke(x, "methodName", param1, param2); 自分でてきとうに書いてみました。 Class.getDeclaredMethod() が微妙に使えない子だった(シグネチャが引数に完全一致するメソッドしか取ってこれない)。一応実行時に型チェックしつつ、prote…

関数ポインタ

全部わかったらえらいです。 #include <stdio.h> void f(){} int main() { void (*p)() = f; printf("%x, %d\n%x, %d\n%x, %d\n%x, %d\n%x, %d\n", &f, sizeof(&f), f , sizeof f, *f, sizeof(*f), p , sizeof p, *p, sizeof(*p)); return 0; } 実行結果: C C++ =f は</stdio.h>…

アクセス制御の抜け穴 (C++/Java ; protected編)

Python/Ruby編 OCaml編 さて C++ と Java です。 privateへのアクセスはひとまず後回しにするとして、まずは protected なところから考えていきましょう。 C++ の場合 (protected) 欲しいメソッドがサブクラスからアクセス可能なので、自分でサブクラスを定…

アクセス制御の抜け穴 (OCaml編)

Obj.magic 最強、で終わらそうと思ったのですがそう単純な話でもないらしい。 まず OCaml の private メソッドは、Javaなどのprotected相当で、継承した先のクラスからアクセスすることができます。 しかし呼び出せるのは自分に対してだけで、引数として受け…

アクセス制御の抜け穴 (Python/Ruby編)

ある既存クラスの private なメソッドを外から使えるかどうかという話。他人の触れてはならないプライベートな領域に踏み入りたい! なんていう不埒な欲望が首をもたげて現れた時点で9割9分どっか不健全なわけで、すぐに首を洗って出直すか首を括って死ぬべき…

エラーモナド in Ruby

PHPの@演算子っぽいものをいじってたら Ruby でエラーモナドっぽいものができました。こんな感じで使えます。 result = try { parseint("hoge") }. catch(ArgumentError){ -1 }. catch{|e| puts e; -2 } res_value = result.value if result.good? begin/res…

PHPの@演算子的なもの

http://d.hatena.ne.jp/gnarl/20080820/1219226223例外かどうかを判断するのが誰であるべきかという話はおいといて、try-catch系の構文は、成功/失敗の二値が知りたいだけの場合でもあの長ったらしい構文を使わないといけないのがうざいなーとは常々思ってい…

Two Envelopes

最近パズル系の本を読み漁っているのですが、以前からどうにも腑に落ちなかったものを一つ紹介します。 わりと有名なパズルですがググってもすっきりした解説が見あたらない、というかこれ系の解説が全然理解できないので。。 分かりやすい説明ができる方が…

SRM414 Div1

久々のTopCoder。すっかり感覚を忘れててダメダメだった。 Easy 書類をn枚書かなきゃいけなくて、各書類の順番と書くのにかかる時間が与えられる。完成した書類を提出しないと次の書類がもらえない。しかも受付時間が制限されている。全部提出するのにどんだ…

Names in Boxes

100人の囚人パズルの正解戦略の確率を計算してみました。 ネタバレ含むので自分で考えたい人は見ないでください。

えんしゅうりつ

pi は alias であって訳語とは違うと思うんだ。