My take on functional programming