持っているもの: g: Gen[A], c: Cogen[B], gc: Gen[C] 得たいもの: Gen[(A => B) :=> C] g から A の値を,c.build(gc) から B :=> C の値を生成できる. :=> は両側からの変換があれば,Iso によって引数の型を変更できる. (A => B) => B の変換: 渡ってきた関数に生成した A の値を適用する. B => (A => B) の変換: 生成した A の値で局所的に定義された関数を返す. (表示のためにしか使わないので問題ではない)
Claessen, K.: Shrinking and showing functions: (functional pearl) Proceedings of the 2012 Haskell Symposium, pp. 73–80 (2012) [Claessen2011] Claessen, K. and Hughes, J.: QuickCheck: a lightweight tool for random testing of Haskell programs ACM SIG- PLAN Notices, Vol. 46, No. 4, pp. 53–64 (2011) [Duregaard2012] Duregaard, J., Jansson, P. and Wang, M.: Feat: functional enumeration of algebraic types ACM SIGPLAN Notices, Vol. 47, No. 12, pp. 61–72 (2012) [Matela2017] Matela Braquehais, R.: Tools for discovery, refinement and generalization of functional properties by enumerative testing PhD Thesis, University of York (2017)
//hedgehog.qa/ https://yowconference. com/talks/jacob-stanley/yow-lambda-jam-2017/gens-n-roses- appetite-for-reduction-125 [Pike2014] Pike, L.: SmartCheck: automatic and efficient counterexample reduction and generalization Proceedings of the 2014 ACM SIGPLAN symposium on Haskell, pp. 53–64 (2014) [Runciman2008] Runciman, C., Naylor, M. and Lindblad, F.: Smallcheck and lazy smallcheck: automatic exhaustive testing for small values Proceedings of the first ACM SIGPLAN symposium on Haskell, pp. 37–48 (2008) [Stanley] Stanley, J.: Hedgehog will eat all your bugs, [Stanley2017] Stanley, J.: Gens N’ Roses: Appetite for Reduction, YOW! Lambda Jam 2017 (2017)