趣味のOCaml – F# 日本語ドキュメント
http://d.hatena.ne.jp/taka-island/20100424/1272096524
なところで、コメントを書きましたが、MSDNライブラリの Visual F# の翻訳がアレなので、wiki を立てました。
MSDN – Visual F#
http://msdn.microsoft.com/ja-jp/library/dd233154%28v=VS.100%29.aspx
F# 日本語ドキュメント Wiki
http://moonmile.net/fsdoc/
# Wiki のほうは、もう少し目的が明確な名前にするかな?
このあたりの主旨/流れとしては、
- Visual Studio 2010 から F# と呼ばれる関数言語が導入された。
- F# は OCaml の方言である。
- F# のドキュメントは主に英語で、日本語はほとんどない。
- F# に関するブログも数か所しかない(盛り上がりに欠ける)。
なところで、一方で関数言語としては、Haskell や Scala があるのですが、まあ、個人的に .NET系を触る機会が多いので、Visual F# です。
# そう言えば、「Visual F#」となっているけど、現状、Visual Studio 2010 では、F# の Windows アプリケーションのプロジェクトテンプレートがありません。なので、「Visual」を冠するのは、いつわりですよね~。まあ、手打ちでがしがしやるか、UI を C# で作るのがベターです。
さて、わからんときは英語を読む。日本語の先行ブログを読む、でもいいんですが、ちょっと「オブジェクト指向脳」の方には、かなりハマります(悪い意味で)。きちんと、関数言語の意図がわかっていないと、forループを連発してしまうコードを書きます。
まあ、それでもいいんですが、どうせならば、最初の関数言語の意図とは何だったのか?を抑えて、勉強なり翻訳なりをしたいですよね。
なので、
「関数プログラミング」P.バード、P.ワドラー
http://www.amazon.co.jp/dp/4764901811
を買いました(苦笑)。
これは大学の教科書に使うようなものなのですが、出版が1991年になっています。
原著を見ると、
http://www.amazon.com/dp/0134841891
1988年に出版されています。
C++の発祥が1983年、Modula-2が1978年頃なので、オブジェクト指向とほぼ同時期に発想されているんですね。
# 元ネタは、Lisp だろうから、もっと前なんだろうけど。
そうなると、F# や OCaml を学ぶ時には、関数言語 → オブジェクト指向 の流れで味付けをしいと駄目なわけで、このあたりがずれてしまうと、.NET で関数言語がメインとして使えるメリットが薄れてしまうのです。
逆な言い方をすれば、LINQ は関数言語の良いところを取り入れていますが、
- オブジェクト指向として C# を学ぶ → 味付けとして LINQ を学ぶ。
- データアクセス言語として LINQ を学ぶ → オブジェクト指向として C# を学ぶ。
のように、2のほうでは相当違和感があるわけです。普通は1の方法で学びます。
ここで、何でここに至るのかと言うと、実は2週間ほどF#を弄ってみたわけです。タプルやらリストやら、Lispを知っているので、このあたりはなんとかなんですが、どうもその後はオブジェクト指向に引っ張られるんですよね。OCaml や Haskell のサイトを見て、似た関数を作ろうとおもうけど、私にとっては、C# で書いたほうが楽、ってな感じで、どーしようかなぁ、ってな感じだったのです。
それで仕方がない。初心に帰って勉強するか、ってな具合になって池袋のジュンク堂へ。他の関数言語をちらちら見て、F#の洋書を手にとって、そして目についたのが「関数プログラミング」です。ぱらぱら見て、数式が出てくるのでこれならば良さそう(関数言語=数学で使う、という知識はあったので)、ってんで1階レジへれっつらごー!(死語w)。
レジで「4,400円になります」って言葉に「うっ」ってなりましたが、仕方がない買う、ってなもんです。
1ヵ月間勉強したんですが、これが面白い。抜群に面白いし、どうして関数言語が生まれるのか、がびっしりと書いてあります。いや、実際のところは OCaml や Haskell よりも前に書かれていて、F# なんて影も形もありません。付録には Miranda というプログラム言語の例があります。
まあ、そんな訳で、F# の用語を、
- 一般的な関数言語の用語に統一
- OCaml の用語と統一
とするなら、やぶさかではない、って具合です(偉そう…)。
サマンサ ディズニー 財布 バッグ 革 http://www.bagsorain.info/