A set of functional implementations, coded in a programming language, that solve a complex of problems and can be reused in different programs to provide specific functionalities without having to rewrite the code from scratch.