[Haskell-cafe] Polymorphic QuickCheck arguments

Sebastiaan Visser sfvisser at cs.uu.nl
Tue Jun 17 07:17:07 EDT 2008


On Jun 17, 2008, at 11:53 AM, Hugo Pacheco wrote:
> 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?
> Could someone please explain this to me? I'm not saying it does not  
> make sense, but I would like to understand how it works. Being  
> possible to change this behavior, this is, assign another "default  
> type" whenever polymorphic types occur, would be awesome.

I think it is GHCi that is instantiating the type with (). Try  
compiling the program, it will probably be rejected by the compiler  
when you do not specify a concrete type.

You can, for example, try this:

verboseCheck (tst :: [Int] -> Bool)

> Cheers,
> hugo


More information about the Haskell-Cafe mailing list