Hi,

2012/2/23 Maxime Henrion <mhenrion@gmail.com>

> * Why do you have the instance:
>
> instance GDeepSeq V1 where grnf _ = ()
>
> The only way to construct values of a void type is using ⊥. And I
> would expect that rnf ⊥ = ⊥, not (). I think the best thing is to just
> remove the V1 instance.

This would have the consequence that any type tagged with a phantom type
(for whatever reason) couldn't be used with deepseq, it would return
bottom. What if I want to deepseq a 2-3 finger tree tagged with a
type-level natural that ensures the proper shape of the tree statically?
It seemed to me that I should be able to do that; this is why I added
this V1 instance.

I'm not sure I understand your comment... V1 should only be used for datatypes without constructors, such as `data Empty`.


Cheers,
Pedro