最近は並行プログラミングの必要性から、関数型言語の人気が以前にもまして高まってきているという話はいろいろなところで耳にするようになったのですが、普段はJavaしか書かない私のような普通の業務プログラマーにとっては、正直なところHaskellやScalaといった言語はなかなかに敷居が高いところがあると思います。これらは型安全性を重視している静的な型付けの言語であり、プログラムを正しく実行するには型推論などの仕組みを理解する必要があります。また、純粋な関数型としての特性を理解するにはモナドなる難解な概念を理解しないといけないようですし、特に、Scalaの場合はオブジェクト指向言語の要素がミックスされているため、クラス、トレイト、抽象型などの概念や、関数型と命令型の正しい使い分けなどを理解しなくてはなりません。*1とにかく、これらの言語では関数型を学ぶ以前にいろいろ新しく学ぶことがたくさんあるた