I think it&#39;s more complicated because he doesn&#39;t know what the return type or arity of the function is. In QuickCheck they know the return type of a property is Bool. In this case, we only know<span></span> that the return type is an instance of Show. I don&#39;t think that&#39;s enough to simply implement this. <br>
<br>On Sunday, January 13, 2013, Stephen Tetley  wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Yes - I was just checking the first QuickCheck paper to see how the<br>

authors did this.<br>
<br>
You would need a new type class that works like `Testable` and the<br>
versions of associated machinery `forAll` and `evaluate` to unroll<br>
function application.<br>
<br>
<br>
On 13 January 2013 09:28, Roman Cheplyaka &lt;<a href="javascript:;" onclick="_e(event, &#39;cvml&#39;, &#39;roma@ro-che.info&#39;)">roma@ro-che.info</a>&gt; wrote:<br>
<br>
&gt;<br>
&gt; This can be done with relatively simple type class hackery. In fact,<br>
&gt; QuickCheck already does that in order to generate arguments and print<br>
&gt; them in case of failure.<br>
&gt;<br>
&gt; Roman<br>
<br>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="javascript:;" onclick="_e(event, &#39;cvml&#39;, &#39;Haskell-Cafe@haskell.org&#39;)">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
</blockquote>