Jump to content

Talk:First-class function/to do

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
  • Interaction between higher-order and nested functions. Supported in Algol and Pascal. (Andrew Appel. Modern compiler implementation)
  • 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#Anonymous delegates vs. C Sharp 3.0#Lambda expressions
  • 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 this, 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.

Start a discussion