haskell-ja > Archives > 2009/08/01

2009/08/01 11:18:03 UTCikegami
#
... Searching now ...
2009/08/01 11:22:11 UTCikegami
#
QuickCheck と QuickCheck2 で意味合いが違う...
#
ポインタはなくて、Ruby に QuickCheck もどきを実装したって話を John Hughes と Koen Claessen に口頭で言ったときに
#
なんで「coarbitrary って名前なのさ、それに従ったけど」って言ったら
#
二人揃って「It's duality, ho, ho, ho」っていうから
#
(一部脚色あり
#
QuickCheck では Arbitrary class に arbitrary, coarbitrary の二つが属しているけど
#
Koen Claessen の D 論、および QuickCheck2 では Coarbitrary class ってのがあって、arbitrary と coarbitrary は分かれているんだよね
#
まあ、それはともかく、会話には続きがあって、「なにそれ、その duality ってのは」って聞いたら
#
Koen の D 論をごそごそ出してきて
#
「はじめのアイデアはこうだったのさ:
#
instance (Coarbitrary a, Arbitrary b) => Arbitrary (a->b) where 
  arbitrary = 
    promote (\a -> coarbitrary a arbitrary)
#
instance (Arbitrary a, CoArbitrary b) => CoArbitrary (a -> b) where
  coarbitrary f gen =
    do xs <- arbitrary
       coarbitrary (map f xs) gen
#
どうだい?」
#
QuickCheck2 では、最初の方はもうちょっとましになってて
#
(条件略) arbitrary = promote (`coarbitorary` arbitrary)
#
まあ、でもおなじことだ
#
しかし、これをみて adjoint とかいう議論はぼくにはわからない
#
Shelarcy さんも同じ疑問をもって、直接 Koen にメール投げたって言ってた気がするな、QuickCheck を記事にするにあたって
#
何のポインタにもなっていなくてもうしわけない
2009/08/01 13:48:31 UTCnwn
#
これ読んだら寝よう: http://okmij.org/ftp/Haskell/types.html#Haskell1
2009/08/01 13:52:57 UTCnwn
#
coarbitrary の書き方が未だによくわからない
2009/08/01 19:10:01 UTCikegami
#
promote つかいます