私は、いくつかの作り上げられた言語で書かれたスクリプトを解析し、そのスクリプトを使用していくつかの計算を行うプログラムを書いています。この言語には、タイプの外部OCaml関数を呼び出すために使用される特定の構造があり'a -> bool
ます。だから、言語の真ん中で私たちは持っているかもしれません
blah blah function (foo 45) blah blah
パーサーに次のようなコンストラクターを使用してもらいたい
OCamlFunction of ('a -> bool) * 'a
そのビットを値として解析します
OCamlFunction (foo,45)
ここで、「foo」は、ユーザーが別の.mlファイルで提供する必要があり、パーサーが事前に知らない関数です。「foo」が定義されているOCamlファイルの名前のみが実行時にパーサーに渡されます。したがって、string->型の関数を定義する必要があります('a->bool)
。これは、ある関数の名前を取り、その関数を返します。
私の質問は次のとおりです。
(1)コードの動的ロードではDynLink.loadfileを使用する必要があると想定しています。これは行く方法ですか?
(2)識別子の知識から関数「foo」にアクセスするにはどうすればよいですか?(これは私をcamlp5に導きますか?)