First-class function: Difference between revisions

Content deleted Content added
Reverted to version as of 09:06, 10 October 2006, links added to promote a site are not good external links per 3rd guideline.
m Robot-assisted disambiguation (you can help!): C programming language
Line 9:
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.
 
==See also==