paperlined.org
dev > programming_languages > features > search_for_new_languages
document updated 14 years ago, on Jun 22, 2009

I'd like to explore specific esoteric programming language features, so I wouldn't mind if the next language I learn has some of them. Specific things I consider a plus:

  Javascript Lua Perl 5 Perl 6 PHP Python Ruby Java JVM C# CLR Scheme Haskell OCaml Clojure Scala
I'm leaning towards (out of 5) 5 4 5 4 3
threshold for consideration ** ** ** ** **  ** **
Other bits
dynamic or static typing? D D D D D D D S - S - D S S D S
purely functional language N N N N N N N N - N - Y Y N, N
code-as-data, e.g. Lisp-like syntax N N N N N N N - N - Y N N Y N
lazy evaluation Y sorta N? N? Y Y Y?
Functional programming bits
closures Y Y Y Y v5.3 Y Y not yet WkAr Y Y Y Y Y
serializable closures module Y
Lisp-style macros Y N Y
other metaprogramming patch barely
sorta
Y sorta - N - Y, Y WkAr
first-class functions Y Y N Y
anonymous functions Y sorta N Y
higher-order functions Y Y
formally recognizes pure functions N? N v4.0? Y
tail call optimization N Y N N N Y N N
Coroutines/generators/continuations
first-class continuations N N N Y patch v1.9 N N Y Y patch N v2.8
coroutines (send) (controllable fibers) N Y N Y Y, more v1.9 N
generators (receive) v1.7 Y v2.5 Y N Y
Multithreading
usable threads? N Y Y
true concurrency N Y Y Y

legend

- not applicable
WkAr a (possibly imperfect) workaround exists
a VM (that could support many different languages), not just one specific language