Content deleted Content added
m Robot-assisted disambiguation (you can help!): Haskell programming language |
m Robot-assisted disambiguation (you can help!): Python programming language |
||
Line 7:
== Availability ==
Languages which are strongly associated with functional programming, such as [[Lisp programming language|Lisp]], [[Scheme (programming language)|Scheme]], [[ML programming language|ML]], and [[Haskell (programming language)|Haskell]], all support first-class functions. Other languages which also support them include [[Io programming language|Io]], [[Python (programming language)|Python]], [[ECMAScript]] ([[JavaScript]]), [[Lua programming language|Lua]], [[Ruby programming language|Ruby]] and [[Scala programming language|Scala]]. Also [[Perl]] supports first-class functions (passed using references to them).
The modern, natively compiled programming languages support functions defined statically at compile time. Most of them, e.g. [[C (programming language)|C]] and [[Pascal programming language|Pascal]], additionally support function pointers, which can be stored in data structures and passed as arguments to other functions. Nevertheless, they are not considered to support first class functions, since, in general, functions cannot be created dynamically during the execution of a program. The closest analog would be a dynamically compiled function created by a [[just-in-time compiler]], which is compiled as an array of [[machine language]] instructions in memory and then cast to a function pointer. However, this technique is specific to the underlying hardware architecture and is, therefore, neither general nor portable.
|