Talk:First-class function/to do


 * Interaction between higher-order and nested functions. Supported in Algol and Pascal. (Andrew Appel. Modern compiler implementation)
 * Explain the FUNARG problem.
 * Raphael A. Finkel. Advanced Programming Language Design
 * Michael Lee Scott. Programming Language Pragmatics
 * Functions as dynamic values in dynamic programming languages (eval)
 * C Sharp 2.0 vs. C Sharp 3.0
 * Lexical and dynamic scoping
 * Anything to say about recursion? (Anonymous recursion, returning nested recursive functions, tail recursion)
 * Putting it together: function composition, a higher-order function taking two functions as argument and returns an (anonymous or nested) function.
 * Pascal: fails because we cannot return functions
 * Oberon: fails because we cannot return nested functions
 * C: fails because the function we return needs to have access to the (non-local) paramaters
 * Lisp: fails because of dynamic scoping
 * C++0x: fails because closures do not extend lifetime/capture by copy
 * Java: fails because anonymous inner classes cannot capture the non-final parameters
 * Early languages: POP-2
 * parameters/non-local variables/partial application
 * First-class functions and object-oriented languages (scoping of, fully-featured closures?)
 * Discuss why C is sometimes said to have 1.5-class functions (e.g. in MLS, Prog. Lang. Prag.)
 * Tidy the table (again...); add ref=note
 * Figure out how Algol and Pascal compilers handle passing nested functions as arguments to higher-order function. They probably don't build a closure.
 * Missing from language support table: BASIC, COBOL, PL/I, PL/M, Modula, Modula 2, Modula 3
 * http://c2.com/cgi/wiki?FirstClass
 * Other aspects of first-class entities: equality testing, pattern matching, deriving from Object, etc.
 * Mention and link to closure conversion.