It does not seem like printing the result value from IO (), because with a more complicated example for lists.

t :: [a] -> Bool
t x = True

then it randomly generates values of type [()].

*Quick> verboseCheck t
0:
[]
1:
[()]
2:
[(),(),()]
3:
[]
4:
[()]
5:
[(),(),(),()]

I just wonder how the a got instantiated to ().

Thanks,
hugo


On Tue, Jun 17, 2008 at 11:05 AM, Dougal Stanton <dougal@dougalstanton.net> wrote:
2008/6/17 Hugo Pacheco <hpacheco@gmail.com>:
> Hi all,
> There is something about polymorphic tests in QuickCheck that I do not
> understand.
> If you write the simplest dummy test function
> tst :: a -> Bool
> tst _ = True
> and evaluate it we get
>> verboseCheck tst
> 0:
> ()
> 1:
> ()
> ...
> How come did the polymorphic value a get instanciated to ()? Is this done
> via the Testable type class?

I haven't got something here to check with, but from the formatting it
looks like every odd line is a randomly-chosen boolean value, and the
following line is the result? It might be just printing the result
value of IO (). Maybe try a more complete test to see how that looks?

Cheers,

D


--
Dougal Stanton
dougal@dougalstanton.net // http://www.dougalstanton.net



--
www.di.uminho.pt/~hpacheco