Why functional programming matters