that is, the same thing as midpoint(), but with a uniform notation. Same thing for the corresponding functor.