単なる興味からですが、関数型言語をひとつ習得してみようと思っています。
あなたがお勧めと思う言語とお勧めの理由、参考書 or URLを教えてください。
ポイントは、以下の3つ。
- 趣味でやるので実用性は重要視しない(実用できるに越したことはないが)
- 関数型言語のエッセンスを学べる(定義は回答者にお任せします)
- 日本語文献(出来れば書籍)が充実している
今のところ候補としては Common Lisp/Emacs Lisp, Haskell, Gauche あたりがどうか?と考えています。
> Common Lisp と比べて選択するメリットがいまいち感じられないのですが
ごめんなさい。「趣味でやるので」という一文に目を奪われてしまい‥‥もちろん、Lispを習得された方が実用的です。
LOGOは、ネットも何もない時代、教育用言語として一世を風靡しました。その残滓を感じていただければと思います。
http://lang.x0.com/func/ml/sml.htm
ここも情報が多いです。
http://www.geocities.jp/m_hiroi/func/index.html
ML で一番有名な機能は「型推論」でしょう。ML はプログラムから変数などのデータ型を見つけてくれるので、プログラマが型を宣言する必要はほとんどありません。推論できない場合にかぎり、ML は型宣言を要求します。この機能により、ML は静的な型チェックを行う「型付きの言語」でありながら、 Lisp のような柔軟なプログラミングが可能になっています。この他にも、パターンマッチング、多相型関数、モジュール・システムなど、ML には興味深い機能がたくさんあります。
参照透明性(関数に与える引数が同じなら、結果は常に同じ =pure)から、getchar() 風の関数は存在が許されない(値がいつも同じにはならないから)ため、Haskellに導入されたI/O機構や、関数への引数は1つで事足りるようになっていること(カリー化)など、面白いことが多いと思います。
ただ、Lispについてほとんど何も知らないなら、最初にLisp言語をやっておくのはよいことだと思います。