Functional programming

TODO: add term