#+TITLE: functional programming - functional programming is a way of writing code by means of pure functions - benefits of functional programming: 1. Immutability - All values derived from old values 2. Testability - Pure functions are easy to test - difficulties of functional programming: 1. unintuivive - many people learn programming either imperatively or in an object-oriented manner 2. impractical? - interfacing with "the real world" is challenging