PROS
Easier to read and debug pure functions
Easier to test pure functions
Fewer unexpected consequences in the
code
Pure functions are highly reusable from
project to project
Can run different functions in parallel to
make code faster
CONS
Tricky to get used to thinking in this
paradigm, can feel limiting: "side effects"
(writing to files, etc.) are most of what we
want
to do in programming
Fewer experts, tools, frameworks exist for
functional programming
Steeper learning curve and fewer
educational resources
Larger memory usage limits applications