OOP :: data : FP :: functions
In object-oriented programs, we compose abstractions by composing data structures – this is composition in the space dimension a program, if you will.
In functional programs, we compose abstractions by composing functions (subroutines, processes, whatver you call them) – this is composition in the time dimension of a program.
I think this dual is conceptually interesting and can be useful for thinking about the structure of large programs that are macro-OOP vs macro-FP. It can help carry over lessons in one paradigm to equivalent lessons in the other paradigm.
Next: What makes Twitter different, and other thoughts on identity