If the Control.DeepSeq module exports an error-yielding instance, then one
would need to newtype all their ForeignPtrs in order to define their own
correct NFData instance. Naturally I’m biased, but that seems like quite a
hoop to jump through to get correct but subtle behavior. I’m not sure the
core libraries go to such lengths to hide correct-but-tricky behavior
anywhere else; I’d be interested in seeing existing examples of this.
On Wed, Jan 15, 2020 at 1:13 AM Henning Thielemann <
lemming(a)henning-thielemann.de> wrote:
>
> On Wed, 15 Jan 2020, Travis Whitaker wrote:
>
> > If such an error-yielding instance were added, how would users who need
> > the correct-but-potentially-confusing behaving NFData instance cope with
> > this?
>
> In the criterion/record example they would manually implement the NFData
> instance for the record, as you already suggested.
>