From @jroper:

> ActionBuilder is what actually builds an EssentialAction. It combines a body parser with a request header to produce a Request, then transforms that Request to some other type R, and then invokes the the action itself with R as the argument.

> ActionFunction is a generalisation of "transforms that Request to some other type R". It knows nothing of body parsers or EssentialAction, or what options exist to build the action (eg, the various forms of apply and async that ActionBuilder provides). It just knows how to transform the request and consequently invoke the action. In addition, it includes the andThen for composing.

> ActionBuilder is needed as the base for building all actions, and then other ActionFunction's can be composed with it.

So how about `Translator` then as per http://www.eaipatterns.com/MessageTranslator.html?

...and perhaps enhance the type documentation with these descriptions?