2017-08-03 12 views
0

たとえば、次のファイルをプログラムに動的にロードして結果を出力したいとします。OCamlプログラムで動的にOCamlコードを評価するには?

input1.txt - >プリント100

let x = 10 in x * x 

input2.txt - >プリント3

let x = 1 and y = 2 in x + y 

input3.txt - >プリント4

let ls = [1;2;3;4] in List.length ls 

ocaml_pluginこのプロジェクトに役立つかもしれません。私はそれを実装する方法の詳細を知りたいと思います。ありがとう!

+0

あなたはこれをやりたい理由を説明できますか? – Drup

+0

私は自分自身のランタイムグラフ電卓を構築しています。ベースノードはOCaml式です。例えば、 'a = let x = 100 in x * x'です。ノードは、他のノードの式であってもよい(例えば、「b = a * a」)。ベースノードは、自己完結型のOCaml表現をとることができます。ベースノードの入力が変更されると、それに応じてすべてのノードが再評価されます。 –

答えて

2

OCamlリファレンスマニュアルの関連部分はdynlink libraryの章です(チュートリアルはhereです)。 ocaml_pluginはこのライブラリの周りにラッパーを提供し、コードを自動的にコンパイルします。

はそうでない場合、あなたは(直接compiler front-endを通じて、冒険もの、または)のいずれか、あらかじめ、dynlinkでそれらをロードしたり、プログラムからコンパイラを呼び出す前.cmoファイルにあなたの.mlファイルをコンパイルする必要があります。

例では、共通のパターン(つまり、引数をとらず整数を返す関数)があり、その周りにインタフェースを定義する可能性があります。

関連する問題