Higher-order programming
Higher-order programming is a style of computer programming that uses software components, like functions, modules or objects, as values.It is usually instantiated with, or borrowed from, models of computation such as lambda calculus which make heavy use of higher-order functions.A programming language can be considered higher-order if components, such as procedures or labels, can be used just like data.For example, these elements could be used in the same way as arguments or values.Examples of languages supporting this are Ada, Wolfram Language, C#, Java, ECMAScript (ActionScript, JavaScript, JScript), F#, Haskell, Lisp (Common Lisp, Scheme, Clojure, others), Lua, Oz, Perl, PHP, Prolog,[2] Python, Ruby, Smalltalk, Scala, ML, and Erlang.