08/10/03 18:38:09
2chって連続した半角スペースが に置換されるようになったの?
f :: A -> B のテストは
・B (or A) の == を使う場合
・一般の場合
・h :: A -> B を用意して f x == h x をテスト
・逆関数 g :: B -> A がある場合
・x == g (f x) をテスト
・y == f (g y) をテスト
・使わない場合
・r :: A -> B -> Bool をうまく用意して r x (f x) をテスト
(テストはランダムな x :: A, y :: B に対して)
大概こんな感じ。
元実装とほとんど同じテストってのは、
g やうまい r が無くて、f x == h x というテストしか無いんだけど、
f と違う h も無くて、でも f x == f x じゃバカ丸出しなので、
== を明示的には使わないで実質的に f x == f x と同じことをやる、
みたいな感じじゃないかな。