私はOCamlでいくつかのアルゴリズムを開発しており、計算の一部が特定の計算機に委ねられるように、いくつかの部分を「プラグイン可能」にする必要があります。
例を示すために、次のような署名があるとします。
module type Algorithm = sig
val feed : float -> unit
val nth : int -> (float -> float)
end
Alg1
そして、とになる2つの異なる実装Alg2
。このAlgorithm
モジュールは、これら2つの実装のようなさまざまな実装のインターフェースを表す必要があります。
今度は別のコンポーネントが必要です。それを、それらのインターフェースを使用する、またはインターフェースを介してExecutor
使用するモジュールと呼びましょう。Alg1
Alg2
ファンクターについて読むと、必要なアルゴリズムの特定の実装でを取得しAlgorithm
て生成するファンクターが必要なようです。ConcreteExecutor
つまり、これExecutor
は、そのコンポーネントの1つでパラメーター化された一種のモジュールです。
私は正しいですか?必要なものを手に入れる最良の方法ですか?私はJava/C ++のバックグラウンドを持っているので、このような考えを疑問に思っています。そのため、インターフェイスと抽象クラスを使用することに慣れており、このファンクター/モジュールの抽象化の問題に正しい方法で取り組む必要があります。
私が欲しいものを取得するための正しい構文はどれですか?
前もって感謝します