10. Average code is complex
Side-effects go wild
Logical steps are interleaved
Changes are error-prone
http://www.guardian.co.uk/sustainable-business/research-confirms-health-impacts-tire
11. Average state is fragile and shared
Exposed for updates in any way
Can easily mutate under your feet
Changes are error-prone
http://www.bbcgoodfood.com/content/knowhow/glossary/egg/
12. Parallelism is hard
“The Multicore Revolution”
Threads + shared mutable state :(
Changes are error-prone
http://www.russel.org.uk/Presentations/euroPython2010_theMulticoreRevolution.pdf
http://jalopnik.com/5965581/this-is-how-not-to-parallel-park-on-a-hill
20. Recursion
List = head() + tail()
State is hidden, built up on stack
Recursion elimination
https://bitbucket.org/evgenyg/devcon-2013/src/master/recursion.groovy
45. pinboard.in/u:evgenyg/t:fp/
Arturo Herrero - Functional Programming with Groovy
Neal Ford - Functional Thinking
Martin Odersky - FP Principles in Scala
Erik Meijer - FP Fundamentals
MIT - Structure and Interpretation of Computer Programs
University of Washington - Programming Languages
Stanford - Programming Paradigms