関数型言語 F#

作成日 : 2014-05-17
最終更新日 :

関数型言語 F#

実践 F# 関数型プログラミング言語」を参考に F# を調べてみる。

導入

F# のソースコードは、F# CTP (Community Technology Preview) として入手先が同書で記述されているが、 現在リンク切れである。 私が調べてみたところでは、2014-05-17 現在、http://www.microsoft.com/en-us/download/details.aspx?id=1918 にある。 実際には、Google などで、fsharp.zip を検索して出てくるサイトが、 ソースコード入手先になるのだろう。

さて、F# CTP を入手して、コンパイラで実行ファイルを作り起動してみたが、 下記のエラーが生じ、実行できなかった。

ハンドルされていない例外: System.IO.FileNotFoundException: ファイルまたはアセンブリ 'FSharp.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'、 またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。 ファイル名 'FSharp.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' です。 場所 .$Hello$fsx.main@()

警告: アセンブリ バインドのログ記録がオフにされています。 アセンブリ バインドのエラー ログを有効にするには、レジストリ値 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) を 1 に設定してください。
注意: アセンブリ バインドのエラー ログに関連するパフォーマンス ペナルティがあります。 この機能をオフにするには、レジストリ値 [HKLM\Software\Microsoft\Fusion!EnableLog] を削除します。

こんなこと言われてもわからない。

仕方ない。Visual Studio 2013 を導入して、これとの組み合わせでやることにしよう。

Visual Studio 2013 Express を導入して起動しようとしたら、 こんなダイアログが出てしまった。

問題が発生しました。リモート名を解決できませんでした。: 'app.vssps.visualstudio.com'

仕方がない。何が起こるかわからないが[続行]をクリックする。

一応ウィンドウは開いた。何もせずに終了して、今度は F# の部分のみを入れる。

ファイル→新しいプロジェクトで、F# を開く。本では次の4種類があると書いてある。

種類説明
F# アプリケーション
F# ライブラリ
F# チュートリアル
F# Silverlight ライブラリ

ところが、Visual Studio 2013 Express では次の 3 種類しかない。しかも英語だ。

種類説明
Console Application
Library
Tutorial

きっと Silverlight ライブラリがないのだろう。また、ただのアプリケーションではなくて Console がついているのも気になる。 ともあれ、Console Application でプロジェクトを作る。すると、もれなくこんなコードが付いてくる。

// Learn more about F# at http://fsharp.net
// See the 'F# Tutorial' project for more help.

[<EntryPoint>]
let main argv = 
    printfn "%A" argv
    0 // return an integer exit code

再度 F# に挑戦する

前回はほとんど F# に関する知識が得られなかったので、雪辱を期して再度挑む。今度は、Linux ( Ubuntu ) で試してみる。 例によって、
$ sudo apt install fsharp
である。こんなメッセージが出てくる
(中略) アップグレード: 0 個、新規インストール: 163 個、削除: 0 個、保留: 0 個。 49.1 MB のアーカイブを取得する必要があります。 この操作後に追加で 233 MB のディスク容量が消費されます。 続行しますか? [Y/n] Y (後略)

インストールは 10 分程度で終わった。対話型シェルはどういうものだろう。

	$ fsi
	コマンド 'fsi' が見つかりません。もしかして:
	(後略)

違うのか。では、これではどうか。

	$ fsharp
	コマンド 'fsharp' が見つかりません。もしかして:

  command 'gsharp' from deb mono-tools-gui (4.2-3)
  command 'csharp' from deb mono-csharp-shell (6.8.0.105+dfsg-2)
  command 'fsharpc' from deb fsharp (4.0.0.4+dfsg2-2)
  command 'fsharpi' from deb fsharp (4.0.0.4+dfsg2-2)

次を試してみてください: sudo apt install 

きっと 'fsharpi' だろう。最後の i はインタラクティブの意味に違いない。 もう一つの 'fsharpc' は F# のコンパイラだろう。

$ fsharpi

F# Interactive for F# 4.0 (Open Source Edition)
Freely distributed under the Apache 2.0 Open Source License

For help type #help;;

>

よかった。

> #quit;;

- Exit...
$

まりんきょ学問所関数型言語手習い > 関数型言語 F#


MARUYAMA Satosi