First-class function: Difference between revisions

Content deleted Content added
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 [[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).
 
All modern compiled programming languages support functions defined statically at compile time. [[C programming language|C]] additionally supports function pointers, which can be stored in data structures and passed as arguments to other functions. Nevertheless, C is not considered to support first class functions, since in general functions cannot be created dynamically during the execution of a program. The closest analog in C is that of 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.