Functional languages are a type of declarative language. This paradigm has no mutable data structures, rather it makes use of structures like mathematical expressions, where the same input will always result in the same output. In functional languages, functions can call other functions and use the output of one function as the input for another.