Introduction to Functional Programming
Object-oriented programming aims to keep data and behavior together into a single item. Data and the methods used to work with that data should be together in one unit. Directly manipulating that data is acceptable.
Functional programming aims to separate data from behavior. It aims to keep data separate from the functions that work on it. In doing so, it results in functions that are pure and reusable.