Effect-driven interpretation: Functors for natural language composition