My CS intuition would say: Anything else that wasn't trivial, would require information we don't have. There aren't really other choices if we want the functor to use the info we have and no more.