同じインターフェースを実装するモジュールがいくつかあります。コマンド ラインで指定された 1 つの引数に応じて、このモジュールを 1 つだけロードしたいと考えています。
私はファーストクラスのモジュールを使用することを考えていましたが、問題はモジュールがインスタンス化される前にいくつかの関数を実行したいということです.
今のところ私はこれを持っています:
module Arch = (val RetrolixAbstractArch.get_arch() : RetrolixAbstractArch.AbstractArch)
let get_arch () =
let arch = Options.get_arch() in
if arch = "" then
Error.global_error "During analysis of compiler's architecture"
"No architecture specified"
else
if arch = "mips" then
( module MipsArch : AbstractArch)
else
Error.global_error "During analysis of compiler's architecture"
(Printf.sprintf "Architecture %s not supported or unknown" arch)
ただし、コマンド ラインはまだ解析されていないOptions.get_arch
ため、空の文字列を渡してください。
この関数が実行される前に、コマンドラインの解析を実現したいと思います(関数に解析を追加することなく)。出来ますか ?これを達成する別の方法を見つける必要がありますか?