2012-03-28 11 views
9

1は、F#インタラクティブシェル(FSI)、推論された表現型(signature)を使用している場合は、その値と一緒にコンソールに出力されます。自分のコードでFSIに似たF#タイプの署名を生成するにはどうすればいいですか?

val it : int * string * float = (42, "Hello F#", 42.0) 

がどのように私は自分のコード、例えばで同じ動作を模倣することができます推測された型をF#式の文字列として取得するには?

F#式を動的に評価する必要はありません。式はコンパイル時に認識され、静的なF#コードの一部です。 F#のデモ用にLINQPadのFSI出力を模倣できるようにするには、この機能が必要です。

+0

表現は控え-のタイム知られている場合は、その理由として、かなり前・オブ・タイムFSIを介してそれらを実行していませんか? – pblasucci

+0

@pblasucci私はライブコーディングにLinqPADを使用しています。これはF#で完璧に機能します。式の署名を表示する必要があるたびにFSIに切り替えると時間が浪費されます。しかし、私はオプションとして、それを保つ、ありがとう! –

+0

@AlexanderGalkin LinqPADはシェルコマンドを実行できますか?シェルコマンドを実行して、--sigフラグを指定してfscコマンドを実行し、現在作業しているファイルを渡すことができます。 –

答えて

10

UNQUOTE

Unquoteを使用するには、タイプのF#の署名を取得するための施設があります。単に最新のリリースをダウンロードし、LINQPadを通してUnquote.dllに参照を追加してください。

enter image description here

あなたが興味を持っている場合、あなたはFSharpNameType拡張の実装のためのソースコードでピークすることができます:http://code.google.com/p/unquote/source/browse/tags/2.1.0/Unquote/ExtraReflection.fs#54

FsEye

を使用する別のニートのアプローチは、(FsEyeがUNQUOTE同じF#型署名印刷アルゴリズムを使用)LINQPadにFsEyeを埋め込むLINQPadのベータCustom Visualizer APIを使用することであろう。これは非常にシンプルなので、ダウンロードするにはLINQPad betaをダウンロードするだけです.FsEyeの最新リリースからFsEye.dllをダウンロードして参照してください。

enter image description here

+0

**私は**環境とデータとメタデータを混在させることを愛しています。私は同じようにビジュアルスタジオの中でそれらを愛し、表現の置き換えを行って、私たちが書いている機能の具体的な結果を得ていきます... – nicolas

+0

画像がありません!だからイライラする!!! :-) –

+1

DLLを手動でダウンロードしてreffするのではなく、LinqPadベータ版がnugetパッケージをサポートしているので、おそらくFsEye dllのnugetパッケージですか? – jbtule

1

F#コンパイラコードを見て、コンパイラで--sigオプションがどのように処理されるかを見れば、あなたが探しているものが得られます。ここ--sigオプションと署名についての詳細:

Signatures (F#)

+0

あなたの提案をありがとう - 私は私の質問に署名を追加しました。コンパイラの実装を掘り下げようとすると、残念なことに思えます。申し訳ありません。 –

+0

'--sig'オプションを使ってデモ中に署名ファイルを提示するだけではどうですか? –

+0

私は彼がプログラムでこれを行う方法を尋ねていると思った。 –

関連する問題