ToDo:
sin-x さんに教えてもらう。
http://ja.wikipedia.org/wiki/対関数
よく整数2つの点とかの hash 値をどう計算するか悩むわけなんだけど、 本質的にこの関数はちょっと遅そうだけど、悪くないかも、ね。
ちょっとやってみた。 適当な値域の乱数のペアを大量に作って適当に突っ込む。
http://github.com/shinh/test/blob/da1e28b9fd201ca2d203d3e187cc280e9a8b9f9a/bijection_hash.cc
ハッシュ関数としては単なるかけ算、 よくある x + y * prime みたいなヤツ、 それとこの対関数、をそれぞれ使ってみた。
最初の立ち上がり部分は値域がほぼ埋まってるのであんまり関係ない。
て感じですかね。
(00:10)
http://svnsearch.org/svnsearch/repos/WEBKIT/search?start-index=20&logMessage=hamaji
これをみるとパッチ数がわかるうえに なんかかっこいいグラフとかがついてていいみたいだ。
Chromium の方はコミッタになる前のが入らんのが微妙ね。 9月ゼロってすごいな
(04:33)
http://d.hatena.ne.jp/camlspotter/20091020/1256049332
via http://twitter.com/chunjp/status/5021818819
これ全然動かないのはなぜなんだろう…
let failwithf fmt = Printf.kprintf (fun s -> failwith s) fmt;;
に変えたらうごいた。 ああ第一引数が (string -> 'a) だから (fun s () -> failwith s) でも unit を取る関数が帰ってるってことなのか。
てことはこう使うの?
let failwithf fmt = Printf.kprintf (fun s () -> failwith s) fmt;; (failwithf "hoge: %s" "hii") ();;
うーんこれ何が嬉しいんだろう。
あと fmt が両辺にある理由もよくわからん。 単に
let failwithf = Printf.kprintf (fun s -> failwith s);;
じゃだめななにかがあるんかなぁ。
(10:54)
前 | 2009年 10月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
let failwithf = Printf.kprintf (fun s -> failwith s);;
だと failwithf が多相型にならないので
failwithf "foo"; failwithf "bar%d" 100;; (* 2個目のfailwithfで型エラー *)
let failwithf fmt = Printf.kprintf (fun s -> failwith s) fmt;;
failwithf "foo"; failwithf "bar%d" 100;; (* ok *)
ううむありがとうございます。インタプリタだと通ったので通るんじゃね? と思ってしまってました。たしかにコンパイラだと怒りますね。
しかしなんでダメなのかの理屈は正直よくわかりません…インタプリタに型を聞くと、
# let failwithf fmt = Printf.kprintf (fun s -> failwith s) fmt;;
val failwithf : ('a, unit, string, 'b) format4 -> 'a = <fun>
# let failwithf = Printf.kprintf (fun s -> failwith s);;
val failwithf : ('_a, unit, string, '_b) format4 -> '_a = <fun>
とか言われて僕には同じに見えるのですが、 'a と '_a は違うものなのか、それともそもそもインタプリタなのでコンパイラと動作が違うのか…
'a と '_a は違うものです。
それぞれの関数を一回使った後に型がどうなってるか確かめてみるとわかるかと
value restriction とか言われます。
http://ftp.yl.is.s.u-tokyo.ac.jp/~oiwa/lecture/ocaml/2001/misc/valuerestriction.pdf
この間も俊太郎の詩をお http://www.stlouisbusinesslist.com/business/5021837.htm?info=viagra generic viagra >:[[[