2012-05-02 12 views
4

OCamlに基づいていくつかのモジュールをF#に変換し、OCamlの 'Quotation.add'コンパイラ指令を引用符拡張機能に適用しました。OCamlをF#に変換する:OCaml引用符の追加と引用拡張子をF#

引用符拡張機能はOCamlで書かれた関数です。 Camlp4ライブラリ関数 '' Quotation.add ''への呼び出しにより、引用符「 」が追加されます。

Camlp4 - Tutorial, Ch. 3

引用パンダと、ここではF#の本で「」Quotation.add「」コンパイラディレクティブ、F#のサイト、Googleとの両方のために検索した後、私が得る答えはノーです。

F#がOCamlの 'Quotation.add'コンパイラ指令の概念やOCaml引用拡張子の概念をサポートしていないことを誰かが確認できますか?

EDIT

注:私は質問をしたときに、私はちょうどCamlp4のはOCamlでのプリプロセッサ・プリティプリンタであることを学んだ、私はそれがOCamlのための個別のライブラリだと思いました。今それは理にかなっています。

+3

正しいですか?ライブラリはF#では利用できないので、F#で必要な機能を再実装するために別の方法を使用する必要があります。あなたは変換している機能についてより多くの情報を共有できますか? –

+0

私はそれがかなり基本的な答えだと思っていましたが、(あなたや他の読者のために)関連性のあるポインタをいくつか追加しました。 –

+0

@TomasPetricekこれは基本的な答えかもしれませんが、存在しないことが分かっているので、存在しないものを探し出す作業がたくさんできます。わかっているように、コメントを見ていない人もいます。ありがとう。 –

答えて

10

正しいのですが、camlp4ライブラリはF#では使用できないため、F#で必要な機能を再実装するために別の方法を使用する必要があります。

一般に

、そこにはF#から使用することができます関連技術のカップルがある(しかし、それらのいずれかが、特定の問題についての詳細を知らなくてもあなたのために有用である場合に伝えるのは難しいです):

  • F# QuotationsはF#コードを操作することができますが、コンパイル機能は制限されています(F#をSQL、JavaScript、またはGPUに変換するのに適しています)
  • F# CodeDom(F#PowerPackから)はF#コンパイラを使用してコードを生成してコンパイルできますコードをテキストとして生成するか、.NETオブジェクト指向のスタイルを使用して生成することができます。
  • T4 Templating私がチェックした最後の時間が、それはF#をサポートしていませんでした(私はモノのバージョンが動作するかもしれないと思う)、.NETのテンプレートメカニズムである
  • F# Type Providers(KVBのおかげで)それが可能のF#プラグインによってタイプを生成するために作りますコンパイラのために。これは、後で使用するいくつかの型(より短い仕様から)を生成するためにcamplp4を使用しているケースを処理しますが、コードを生成する必要がある場合には使用が制限されます。
+3

F#3.0をターゲットにしている場合は、タイププロバイダも関心があります。 – kvb

+0

@kvb素晴らしい点。私はそれを追加します! –

関連する問題