Primal is used by deriveMode but is not exposed
via the Mode class to prevent its abuse by end users
via the AD data type.

It provides direct access to the result, stripped of its derivative information,
but this is unsafe in general as (lift . primal) would discard derivative
information. The end user is protected from accidentally using this function
by the universal quantification on the various combinators we expose.