Proposal: Adding generics-based rnf-helper to `deepseq`

Herbert Valerio Riedel hvr at
Tue Sep 25 10:23:53 CEST 2012

Simon Marlow <marlowsd at> writes:


> So, just to make sure I've followed, the conclusion is that we don't
> want to modify the deepseq package because that would take it outside
> Haskell 98, and we don't want to have a conditional API (quite
> rightly). There's no disadvantage to having the generic functionality
> in a separate package, right?

Yeah, that sums it up about right (the way I perceived the discussion)

Originally, it seemed a bit overkill to me to create a separate package
containing just a few lines of codes

also, I thought that the current default (pure H98/H2010) implementation
for rnf provided by the NFData type-class, which is

| class NFData a where
|     rnf :: a -> ()
|     rnf a = a `seq` ()

could be changed to make use of the DefaultSignature extension at some
point in the future (which'd defintely leave the H98/H2010 featureset
and/or lead to a conditional API), for which having the `genericsRnf`
helper accessible to the `deepseq` package would be a requirement

However, the convenience of being able to write

| instance NFData Foo

instead of the more verbose

| instance NFData Foo where rnf = genericsRnf

isn't such a big deal either... it would have just been a nice use-case
for the DefaultSignature extension IMHO :-)


More information about the Libraries mailing list