I made an attempt at a better documentation for evaluate. See here: https://phabricator.haskell.org/D615