Functional programming is a subset of compositional programming. Composing small reusable programs you link together to make emergent behaviors. One problem I have with iOS and the way OSX has become is that aspect of computer use has been abandoned in preference to single appliance uses. It ignores the way workflows cross program boundaries. Workflows thus become much harder in preference to casual shallow use.