Functional programming in a nutshell