Goal: source code data model for different language & different language family from Language support
| Language | Higher-order functions | Nested functions | Non-local variables | Notes | ||||
|---|---|---|---|---|---|---|---|---|
| Arguments | Results | Named | Anonymous | Closures | Partial application | |||
| Algol family | ALGOL 60 | Yes | No | Yes | No | Downwards | No | Have function types. |
| ALGOL 68 | Yes | Yes[8] | Yes | Yes | Downwards[9] | No | ||
| Pascal | Yes | No | Yes | No | Downwards | No | ||
| Ada | Yes | No | Yes | No | Downwards | No | ||
| Oberon | Yes | Non-nested only | Yes | No | Downwards | No | ||
| Delphi | Yes | Yes | Yes | 2009 | 2009 | No | ||
| C family | C | Yes | Yes | No | No | No | No | Has function pointers. |
| C++ | Yes | Yes | C++11[10] | C++11[11] | C++11[11] | C++11 | Has function pointers, function objects. (Also, see below.)
Explicit partial application possible with | |
| C# | Yes | Yes | 7 | 2.0 / 3.0 | 2.0 | 3.0 | Has delegates (2.0) and lambda expressions (3.0). | |
| Objective-C | Yes | Yes | Using anonymous | 2.0 + Blocks[12] | 2.0 + Blocks | No | Has function pointers. | |
| Java | Partial | Partial | Using anonymous | Java 8 | Java 8 | No | Has anonymous inner classes. | |
| Go | Yes | Yes | Using anonymous | Yes | Yes | Yes[13] | ||
| Limbo | Yes | Yes | Yes | Yes | Yes | No | ||
| Newsqueak | Yes | Yes | Yes | Yes | Yes | No | ||
| Rust | Yes | Yes | Yes | Yes | Yes | No | ||
| Functional languages | Lisp | Syntax | Syntax | Yes | Yes | Common Lisp | No | (see below) |
| Scheme | Yes | Yes | Yes | Yes | Yes | SRFI 26[14] | ||
| Julia | Yes | Yes | Yes | Yes | Yes | Yes | ||
| Clojure | Yes | Yes | Yes | Yes | Yes | Yes | ||
| ML | Yes | Yes | Yes | Yes | Yes | Yes | ||
| Haskell | Yes | Yes | Yes | Yes | Yes | Yes | ||
| Scala | Yes | Yes | Yes | Yes | Yes | Yes | ||
| F# | Yes | Yes | Yes | Yes | Yes | Yes | ||
| OCaml | Yes | Yes | Yes | Yes | Yes | Yes | ||
| Scripting languages | JavaScript | Yes | Yes | Yes | Yes | Yes | ECMAScript 5 | Partial application possible with user-land code on ES3 [15] |
| Lua | Yes | Yes | Yes | Yes | Yes | Yes[16] | ||
| PHP | Yes | Yes | Using anonymous | 5.3 | 5.3 | No | Partial application possible with user-land code. | |
| Perl | Yes | Yes | 6 | Yes | Yes | 6[17] | ||
| Python | Yes | Yes | Yes | Expressions only | Yes | 2.5[18] | (see below) | |
| Ruby | Syntax | Syntax | Unscoped | Yes | Yes | 1.9 | (see below) | |
| Other languages | Fortran | Yes | Yes | Yes | No | No | No | |
| Io | Yes | Yes | Yes | Yes | Yes | No | ||
| Maple | Yes | Yes | Yes | Yes | Yes | No | ||
| Mathematica | Yes | Yes | Yes | Yes | Yes | No | ||
| MATLAB | Yes | Yes | Yes | Yes[19] | Yes | Yes | Partial application possible by automatic generation of new functions.[20] | |
| Smalltalk | Yes | Yes | Yes | Yes | Yes | Partial | Partial application possible through library. | |
| Swift | Yes | Yes | Yes | Yes | Yes | Yes | ||