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 v...