関数型言語の判断基準について、整理してみた。大きく3つのグループに分類できる。
・関数型言語(誰も文句無し)
・関数型プログラミングが可能な言語
・それ以外の手続き型言語

 FP
  ---- 壁0. 変数の壁 ----
 Haskell
  ---- 壁1. 純粋性(副作用)の壁 ----
 SML/OCaml
  ---- 壁2. 型推論の壁 ----
 Scheme
  ---- 壁3. 末尾再帰最適化の壁 ----
 ========<< 越えられない壁 >>========
 Smalltalk/Ruby
  ---- 壁4. 条件判定式/局所宣言式の壁 ----
 Perl/Python/JavaScript
  ---- 壁5. クロージャ/ラムダ式の壁 ----
 ========<< 越えられない壁 >>========
 C/C++/Java...etc

なお、このカキコは「関数型言語Part5」スレの過去カキコ(283-335)を編集したもの
議論の参考になればと思う