evaluate package:rel8

evaluate takes expressions that could potentially have side effects and "runs" them in the Query monad. The returned expressions have no side effects and can safely be reused.