[Haskell-cafe] Polymorphic QuickCheck arguments

Hugo Pacheco hpacheco at gmail.com
Tue Jun 17 15:51:09 EDT 2008


You are right!
If I try to compile it, then it complains about a Show instance for a, what
in fact forces a monomorphic type signature for t.

I have found under Test.Quickcheck.Poly a way to generate Int values for a
polymorphic type, but because it  requires an abstraction Poly a for some
type a I do not see how it can improve.

What it concretely states the module is

- This is the basic pseudo-polymorphic object.

- The idea is you can't cheat, and use the integer

- directly, but need to use the abstraction.

Is it possible to cheat? I would like to...

Thanks,

hugo


On Tue, Jun 17, 2008 at 12:17 PM, Sebastiaan Visser <sfvisser at cs.uu.nl>
wrote:

> 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
>>
>


-- 
www.di.uminho.pt/~hpacheco
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20080617/6444afe4/attachment.htm


More information about the Haskell-Cafe mailing list