On Wed, Oct 23, 2013 at 4:31 AM, Gergely Risko <gergely@risko.hu> wrote:
I can understand that this may be slower in CPU, but can you please
elaborate why would it be worse in memory, how the frees wouldn't happen
in a "timely manner"?  I thought finalisers are called when the
referencee is GCd, so if we free the mpz in the callback, then where are
we going wrong?

There is no guarantee that finalizers will be called at all, much less that they will be called in a timely manner. This is a general and well-known property of all garbage collectors, not something unique to GHC.