syghの新フラグメント置き場

プログラミングTipsやコード断片の保管場所です。お絵描きもときどき載せます。

Visual Studio 2010 SP1とF#

(これは2011-06-10に書いた故OCNブログの記事を移植したものです)

VS 2010 に SP1 を適用すると、適用前までは OK だった Microsoft.FSharp.Math.Matrix.init メソッドの呼び出し時に MissingMethodException 例外が発生するようになってしまった。

ここで、対象のフレームワーク .NET Framework 4 から 3.5 に変更して、System.Numerics への参照を削除すると、正常に実行できるようになりました。

なんだかな……

ちなみに F# は PowerPack がないとチャーシューもメンマも入っていない麺だけのラーメンみたいで微妙です。

・F# PowerPack:
http://fsharppowerpack.codeplex.com/releases/view/45593


F# はなかなか面白いプログラミング言語だけれど、やはり手続き型言語にどっぷり浸かってしまった人間が関数型言語の考え方を理解してメリットを享受するにはまだまだ時間がかかりそうです。特に自分はDirectXOpenGLOpenCLを直接使うことが多いので、いくらF#が副作用のないコードを書けて並列化に向いている言語といっても、これらを直接叩けるC++のほうが慣れていて扱いやすいです。

あと、Web 上の F# のサンプルは、2011年現時点で最新版の 2.0 用ではなく 1.9 系列あるいはそれ以前向けに作られた古いものがまだまだ多いです。F# 2.0 で廃止されているモジュールとか、PowerPack のように標準でインストールされなくなっているモジュールがあったりする上に、文法が 2.0 になって結構変わっている(後方互換性がなくなっている)ので、学習がなかなか大変です。ちなみに自分はC#を2.0から使っていますが、C#はバージョンが上がることによる追加学習のコストは小さいです。

F# には対話環境(F# Interactive)が用意されていることから、スクリプト言語として使う向きもあるみたいなので、PowerShell の文法が気に入らなければ F# をシェルまわりのタスク向けに選択するのもひとつの手かもしれません。IronPython 2.7 同様、Visual Studio 上でインテリセンスが効くのもありがたいです。F# も IronPython も、ともにオープンソース化されてるだけあって、よく似た状況になっています。