2012-02-15 18 views
8

F#コードから実際にうまくいくC#コードへの自動変換があるかどうかは疑問でした。その理由は、私たちがMono for Android、MonocMac、MonoTouch ...と使って各プラットフォーム用のアプリケーションを作成するために、F#でかなりの論理を持っているからです。それらが直接F#をサポートしていないので、F#でロジックをプログラミングして、C#とそれらのツールでGUI部分を続けることができれば、それはうまくいくはずです。自動F#からC#への翻訳

誰かが何かを知っていますか?ありがとう。

+2

直接のF#をサポートしていませんが、F#のdllファイルのとのEXEはあまりにもこれらのプラットフォームで動作するはずです。やってみました? –

答えて

5

F#とC#の両方をサポートするすべての.NETデコンパイラで実行できます。例えば、 Cecil.DecompilerおよびILSpyのように、

スティーブギルハム氏は、F#とC#コードの相互運用性について、Cecil.DecompilerILSpyと他のブログ記事を使用してF#をC#に逆コンパイルする方法についていくつかの良い記事を持っています。これらの記事はあなたに役立つかもしれません。

通常、私はF#コードで何が起こっているのだろうと思っているときにのみILSpyを使用します。これはC#に逆コンパイルするとより明示的になります。 F#コードを別のdllにコンパイルしてC#コードで使用するのが最善の方法です。

+0

実際に問題はありませんか? F#は膨大な時間を節約することができます。後でいくつかの作業を行う必要がある場合は、頭痛でない限り、大丈夫です...ありがとうございます。 –

+4

ILSpyによって生成されたC#コードは、F#でクロージャを使用すると、無効な名前の内部クラスが生成されるため、コンパイルされる可能性は低くなります。 – Robert

6

なぜコードを翻訳する必要がありますか?コンパイルされた管理されたバイナリは、Monoでうまくいくはずです。それをプロジェクトに追加するだけです。

ILSpyのようなツールを使用してコードを別の言語に逆コンパイルすることはできますが、それほど大きな変更はありません。つまり、さまざまな言語を.NET CILにコンパイルするという全体のポイントです。

+0

skolima、MonoTouchプロジェクトにバイナリを追加することはできますか?これらのフレームワークには、モノ自体とは異なる制限があることに注意してください。 –

+3

はい、モノタッチでiPhone上でF#バイナリを実行したデモを見ました。いくつかの制限がありますが、基本的に静的にすべてを解決する必要がありますが、C#とF#の両方で攻撃できます。制限はここに書かれています:http://docs.xamarin.com/ios/about/limitations – Robert

+0

@ロバーツ、私はそのデモを試してみるつもりです。制限事項については、F#はその性質上、静的にすべてを解決することが難しいと私が思う問題です。そうしたケースを見てみましょう。ありがとう、とても役に立ちました。 –

4

理論的には、AndroidのMonoTouchとMonoでF#コードを実行できるはずです。実際には物事はもっと複雑です。 :-)

Android用MonoTouchとMonoは、デスクトップ.N​​ETと互換性のない独自の基本クラスライブラリを提供しています(ほとんどSilverlightのスーパーセットです)。 Android用MonoTouchとMonoの下でF#コードを実行するには、最初に適切なアセンブリに対してF#コードをコンパイルする必要があります。

FSharp.Core.dll(それも可能ですか?)またはポートFSharp.Core.dllのすべての依存関係を削除して、同等のMonoTouchおよびMono for Androidアセンブリに対して実行できるようにする必要があります。私はこれが可能だと確信していますが、それが完了しているか、どれくらい簡単かは分かりません。

FSharp.Core.dllおよびそれに関連する依存関係を削除または完了したら、必要なすべてのアセンブリ(F#アセンブリ+依存関係)をプロジェクトに追加して実行するだけで済みます。

3

--standalone(Properties | Build | Other flags | --standalone)を使用してF#ライブラリをコンパイルするだけで、FSharp.Core.dllがライブラリに組み込まれます。

4

ちょうどF#とすべてのもののMonoの男によってこれらのブログ記事を見つけました:MonoTouch & F# P IMonoTouch & F# P II

+1

助けていただきありがとうございます。それとは別に、Miguel de IcazaはF#をXamarin(http://news.ycombinator.com/item?id=5251413)に持ってきて、すばらしいニュースであり、F#をまったく異なるレベルにするとコメントしています。 –

+0

@JacoboPolavieja数ヶ月前、F#MonoGameテンプレートが追加されました。だからそれがある。 – Jwosty

+3

Xamarinは現在F#をサポートしているので、すべてのデスクトップ、Web、iOS、AndroidなどF#アプリケーションをどこにでも持つことができることはエキサイティングです...まだ使用されていない言語でありながら、 。それはただ素晴らしいです:)。 –