 Functional programming languages define programs and subroutines as mathematical functions and treat them as first-class.Many so-called functional languages are "impure", containing imperative features.Many functional languages are tied to mathematical calculation tools.